Чи має Java аналог C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Мені потрібно використовувати власний тип даних.
Відповіді:
Java остаточно не має конструкцій :) Але те, що ви тут описуєте, виглядає як клас JavaBean.
inline class
в якийсь момент найближчим часом, що, на мою думку, більше схоже на структуру.
Еквівалент у Java структурі буде
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
і в цьому немає нічого поганого за правильних обставин. Приблизно так само, як у C ++, насправді з точки зору того, коли ви використовуєте структурні вірші, коли ви використовуєте клас з інкапсульованими даними.
Насправді структура в C ++ - це клас (наприклад, ви можете визначити там методи, його можна розширити, він працює точно так само, як клас), єдина різниця полягає в тому, що за замовчуванням модіфікатори доступу встановлені як public (для класів вони встановлюються як private за замовчуванням).
Це насправді єдина різниця в C ++, багато людей цього не знають. ; )
Java не має аналога структур C ++, але ви можете використовувати класи з усіма загальнодоступними членами.
public
, чому б просто не приховувати їх як мінімум як мінімум? Такі класи, як правило, не придатні для використання в API (якщо тільки для можливих null
посилань). Завжди використовуйте мінімальну видимість!
За допомогою Project JUnion ви можете використовувати структури в Java, анотуючи клас за допомогою анотації @Struct
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Більше інформації на веб-сайті проекту: https://tehleo.github.io/junion/
Так, Java ще не має типу struct / value. Але в майбутній версії Java ми збираємось отримати inline class
подібну до структури в C # і допоможе нам написати вільний код розподілу.
inline class point {
int x;
int y;
}
Структури "по-справжньому" чисті не підтримуються в Java. Наприклад, C # підтримує struct
визначення, що представляють значення, і їх можна розподілити в будь-який час.
У Java - унікальний спосіб отримати наближення структур C ++
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
без використання (статичного буфера або списку) робить щось подібне
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
Отже, просто виділіть змінні або статично визначте їх у клас.
firstName
,lastName
іbirthYear
(абоyearOfBirth
звичайно).