8 ответов:
эквивалент в Java для структуры будет
class Member { public String FirstName; public String LastName; public int BirthYear; };и нет ничего плохого в правильных обстоятельствах. Почти то же самое, что и в C++, действительно с точки зрения того, когда вы используете struct verses, когда вы используете класс с инкапсулированными данными.
структуры "действительно" 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