Есть ли в Java аналог C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Мне нужно использовать свой собственный тип данных.
java
data-structures
Дмитрий
источник
источник
firstName
,lastName
иbirthYear
(илиyearOfBirth
конечно).Ответы:
В Java определенно нет структур :) Но то, что вы здесь описываете, похоже на класс JavaBean.
источник
inline class
в какой-то момент в ближайшем будущем она будет больше похожа на структуру.Эквивалент структуры в Java будет
class Member { public String FirstName; public String LastName; public int BirthYear; };
и нет ничего плохого в этом при правильных обстоятельствах. Во многом то же самое, что и в C ++, когда вы используете структурные стихи, когда используете класс с инкапсулированными данными.
источник
На самом деле структура в C ++ - это класс (например, вы можете определять там методы, ее можно расширять, она работает точно так же, как класс), единственная разница в том, что модификаторы доступа по умолчанию установлены на public (для классов они установлены как частные по умолчанию).
Это действительно единственное отличие C ++, многие этого не знают. ; )
источник
Java не имеет аналога структурам C ++, но вы можете использовать классы со всеми общедоступными членами.
источник
struct
в C ++ ( почти ) то же самое, что aclass
в C ++.public
, почему бы просто не оставить их как минимум внутри пакета? Подобные классы обычно не подходят для использования в API (если только для возможныхnull
ссылок). Всегда используйте минимальную видимость!В Project JUnion вы можете использовать структуры в Java, аннотируя класс аннотацией @Struct.
@Struct class Member { string FirstName; string LastName; int BirthYear; }
Больше информации на сайте проекта: https://tehleo.github.io/junion/
источник
Да, класс - это то, что вам нужно. Класс определяет собственный тип.
источник
Да, в Java еще нет типа структура / значение. Но в следующей версии 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 */ ;
Итак, просто выделите переменные или статически определите их в класс.
источник
Вместе с Java 14 он начинает поддерживать запись. Вы можете проверить это https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Record.html
И после Java 15 есть запечатанные классы. Https://openjdk.java.net/jeps/360
источник