Apakah Java memiliki analog dari C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Saya perlu menggunakan tipe data saya sendiri.
Jawaban:
Java secara definitif tidak memiliki struct :) Tapi yang Anda gambarkan di sini terlihat seperti jenis kelas JavaBean.
inline class
di beberapa titik dalam waktu dekat yang menurut saya lebih seperti struct.
Setara di Java dengan struct adalah
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
dan tidak ada yang salah dengan itu dalam situasi yang tepat. Sama seperti di C ++ sebenarnya dalam hal kapan Anda menggunakan ayat struct ketika Anda menggunakan kelas dengan data yang dienkapsulasi.
Sebenarnya sebuah struct di C ++ adalah sebuah kelas (misalnya Anda dapat mendefinisikan metode di sana, ia dapat diperpanjang, bekerja persis seperti kelas), satu-satunya perbedaan adalah bahwa pemodifikasi akses default disetel ke publik (untuk kelas mereka disetel ke privat secara default).
Ini benar-benar satu-satunya perbedaan dalam C ++, banyak orang tidak mengetahuinya. ; )
Java tidak memiliki analog dengan struct C ++, tetapi Anda dapat menggunakan kelas dengan semua anggota publik.
public
, mengapa tidak menyimpannya di dalam paket paling tidak? Kelas seperti itu umumnya tidak cocok untuk digunakan dalam API (jika hanya untuk null
referensi yang memungkinkan ). Selalu gunakan visibilitas minimum!
Dengan Project JUnion Anda dapat menggunakan struct di Java dengan membuat anotasi kelas dengan anotasi @Struct
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Info lebih lanjut di situs web proyek: https://tehleo.github.io/junion/
Ya, Java belum memiliki tipe struct / nilai. Tapi, di versi Java yang akan datang, kita akan mendapatkan inline class
yang mirip dengan struct di C # dan akan membantu kita menulis kode alokasi gratis.
inline class point {
int x;
int y;
}
Structs "really" pure tidak didukung di Java. Misalnya, C # mendukung struct
definisi yang mewakili nilai dan dapat dialokasikan kapan saja.
Di Java, cara unik untuk mendapatkan perkiraan struct C ++
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
tanpa menggunakan (buffer statis atau daftar) melakukan sesuatu seperti
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
Jadi, cukup alokasikan variabel atau tentukan secara statis ke dalam kelas.
Seiring dengan Java 14, itu mulai mendukung Record. Anda mungkin ingin memeriksa bahwa https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Record.html
Dan ada Kelas Sealed setelah Java 15. https://openjdk.java.net/jeps/360
firstName
,lastName
danbirthYear
(atauyearOfBirth
tentu saja).