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



есть ли у Java аналог C++ struct:



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


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

758   8  

8 ответов:

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

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

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

и нет ничего плохого в правильных обстоятельствах. Почти то же самое, что и в C++, действительно с точки зрения того, когда вы используете struct verses, когда вы используете класс с инкапсулированными данными.

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

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

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

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

на самом деле структура в C++ - это класс (например, вы можете определить методы там, он может быть расширен, он работает точно так же, как класс), единственное отличие заключается в том, что модификаторы доступа по умолчанию установлены на public (для классов они установлены на private по умолчанию).

Это действительно единственная разница в C++, многие люди этого не знают. ;)

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

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

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

Я думаю, что c# struct более интересен по сравнению с классом Java bean, о котором упоминалось выше. Структура C# имеет одно преимущество: она не обнуляется. В C#, Int32, Int64 являются структурами, но они ведут себя как примитивный тип, поэтому это намного безопаснее для бокса/распаковки. Напротив, Java Integer-это класс, он становится очень неудобным при автобоксе/распаковке переменной int, потому что вы не будете знать, будете ли вы поджарены, пока не станет слишком поздно во время выполнения.

Comments

    Ничего не найдено.