Java ha un analogo di un C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Devo usare il mio tipo di dati.
Risposte:
Java definitivamente non ha strutture :) Ma quello che descrivi qui sembra un tipo di classe JavaBean.
inline class
ad un certo punto nel prossimo futuro, credo sia più simile a una struttura.
L'equivalente in Java di una struttura sarebbe
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
e non c'è niente di sbagliato in questo nelle giuste circostanze. Più o meno lo stesso che in C ++ in termini di quando usi gli struct verses quando usi una classe con dati incapsulati.
In realtà una struttura in C ++èuna classe (ad esempio puoi definire metodi lì, può essere estesa, funziona esattamente come una classe), l'unica differenza è che i modificatori di accesso predefiniti sono impostati come pubblici (per le classi sono impostati come privati per impostazione predefinita).
Questa è davvero l'unica differenza in C ++, molte persone non lo sanno. ; )
Java non ha un analogo alle strutture di C ++, ma puoi usare classi con tutti i membri pubblici.
public
, perché non mantenerli come minimo interni al pacchetto? Classi del genere non sono generalmente adatte per l'uso in un'API (se non altro per i possibili null
riferimenti). Usa sempre la visibilità minima!
Con Project JUnion puoi usare le strutture in Java annotando una classe con l'annotazione @Struct
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Maggiori informazioni sul sito web del progetto: https://tehleo.github.io/junion/
Sì, Java non ha ancora il tipo di struttura / valore. Ma, nella prossima versione di Java, otterremo inline class
che è simile a struct in C # e ci aiuterà a scrivere codice senza allocazione.
inline class point {
int x;
int y;
}
Le strutture "veramente" pure non sono supportate in Java. Ad esempio, C # supporta struct
definizioni che rappresentano valori e possono essere allocati in qualsiasi momento.
In Java, il modo unico per ottenere un'approssimazione delle strutture C ++
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
senza usare un (buffer statico o elenco) sta facendo qualcosa di simile
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
Quindi, alloca semplicemente le variabili o definiscile staticamente in una classe.
firstName
,lastName
ebirthYear
(oyearOfBirth
ovviamente).