Есть ли у Java аналог С++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Мне нужно использовать свой собственный тип данных.
Есть ли у Java аналог С++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Мне нужно использовать свой собственный тип данных.
Java окончательно не имеет структур: Но то, что вы здесь описываете, похоже на класс JavaBean класса.
эквивалентом в Java для структуры будет
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
и в этом нет ничего плохого. То же самое, что и в С++, с точки зрения того, когда вы используете строковые стихи, когда используете класс с инкапсулированными данными.
Java не имеет аналогов для С++-структур, но вы можете использовать классы со всеми открытыми членами.
На самом деле структура на С++ является классом (например, вы можете определять там методы, ее можно расширить, она работает точно так же, как класс), единственное отличие состоит в том, что установленные modfiers доступа по умолчанию настроены на публичные (для классов, которые они по умолчанию закрыто по умолчанию).
Это действительно единственное отличие в С++, многие люди этого не знают.; )
Да, класс - это то, что вам нужно. Класс определяет собственный тип.
В Project JUnion вы можете использовать структуры в Java, аннотируя класс аннотацией @Struct
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Больше информации на сайте проекта: https://tehleo.github.io/junion/
Структуры, "действительно" чистые, не поддерживаются в Java. Например, С# поддерживает определения 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 */ ;
Итак, просто разместите переменные или статически определите их в классе.
Да, у Java пока нет типа struct/value. Но в следующей версии Java мы получим inline class
, который похож на struct в С# и поможет нам написать свободный от выделения код.
inline class point {
int x;
int y;
}