Antworten:
Java hat definitiv keine Strukturen :) Aber was Sie hier beschreiben, sieht aus wie eine JavaBean-Klasse.
inline class
irgendwann in naher Zukunft, was meiner Meinung nach eher wie eine Struktur ist.
Das Äquivalent in Java zu einer Struktur wäre
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
und daran ist unter den richtigen Umständen nichts auszusetzen. Ähnlich wie in C ++, wenn Sie Strukturverse verwenden, wenn Sie eine Klasse mit gekapselten Daten verwenden.
Java hat kein Analogon zu den Strukturen von C ++, aber Sie können Klassen mit allen öffentlichen Mitgliedern verwenden.
public
, warum sollten sie nicht zumindest zumindest im Paket enthalten bleiben? Solche Klassen sind im Allgemeinen nicht für die Verwendung in einer API geeignet (wenn auch nur für die möglichen null
Referenzen). Verwenden Sie immer die minimale Sichtbarkeit!
Tatsächlich ist eine Struktur in C ++ eine Klasse (z. B. können Sie dort Methoden definieren, sie kann erweitert werden, sie funktioniert genau wie eine Klasse). Der einzige Unterschied besteht darin, dass die Standardzugriffsmodifikatoren auf public festgelegt sind (für Klassen auf private standardmäßig).
Dies ist wirklich der einzige Unterschied in C ++, viele Leute wissen das nicht. ;; )
Mit Project JUnion können Sie Strukturen in Java verwenden, indem Sie eine Klasse mit der Annotation @Struct versehen
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Weitere Informationen finden Sie auf der Website des Projekts: https://tehleo.github.io/junion/
Ja, Java hat noch keinen Struktur- / Werttyp. In der kommenden Java-Version werden wir jedoch eine Version erhalten, inline class
die der Struktur in C # ähnelt und uns dabei helfen wird, zuweisungsfreien Code zu schreiben.
inline class point {
int x;
int y;
}
Strukturen "wirklich" rein werden in Java nicht unterstützt. Beispielsweise unterstützt C # struct
Definitionen, die Werte darstellen und jederzeit zugewiesen werden können.
In Java die einzigartige Möglichkeit, eine Annäherung an C ++ - Strukturen zu erhalten
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
ohne Verwendung eines (statischen Puffers oder einer Liste) macht so etwas
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
Ordnen Sie also einfach Variablen zu oder definieren Sie sie statisch in einer Klasse.
firstName
,lastName
undbirthYear
(oderyearOfBirth
natürlich).