Подтвердить что ты не робот

Поддерживает ли Java структуры?

Есть ли у Java аналог С++ struct:

struct Member {
  string FirstName; 
  string LastName;  
  int BirthYear; 
};

Мне нужно использовать свой собственный тип данных.

4b9b3361

Ответ 1

Java окончательно не имеет структур: Но то, что вы здесь описываете, похоже на класс JavaBean класса.

Ответ 2

эквивалентом в Java для структуры будет

class Member
{
    public String FirstName; 
    public String LastName;  
    public int    BirthYear; 
 };

и в этом нет ничего плохого. То же самое, что и в С++, с точки зрения того, когда вы используете строковые стихи, когда используете класс с инкапсулированными данными.

Ответ 3

Java не имеет аналогов для С++-структур, но вы можете использовать классы со всеми открытыми членами.

Ответ 4

На самом деле структура на С++ является классом (например, вы можете определять там методы, ее можно расширить, она работает точно так же, как класс), единственное отличие состоит в том, что установленные modfiers доступа по умолчанию настроены на публичные (для классов, которые они по умолчанию закрыто по умолчанию).

Это действительно единственное отличие в С++, многие люди этого не знают.; )

Ответ 5

Да, класс - это то, что вам нужно. Класс определяет собственный тип.

Ответ 6

В Project JUnion вы можете использовать структуры в Java, аннотируя класс аннотацией @Struct

@Struct
class Member {
  string FirstName; 
  string LastName;  
  int BirthYear; 
}

Больше информации на сайте проекта: https://tehleo.github.io/junion/

Ответ 7

Структуры, "действительно" чистые, не поддерживаются в 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 */ ;

Итак, просто разместите переменные или статически определите их в классе.

Ответ 8

Да, у Java пока нет типа struct/value. Но в следующей версии Java мы получим inline class, который похож на struct в С# и поможет нам написать свободный от выделения код.


inline class point { 
  int x;
  int y;
}