Apakah Java memiliki analog dari C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Saya perlu menggunakan tipe data saya sendiri.
java
data-structures
Dmitry
sumber
sumber
firstName
,lastName
danbirthYear
(atauyearOfBirth
tentu saja).Jawaban:
Java secara definitif tidak memiliki struct :) Tapi yang Anda gambarkan di sini terlihat seperti jenis kelas JavaBean.
sumber
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.
sumber
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. ; )
sumber
Java tidak memiliki analog dengan struct C ++, tetapi Anda dapat menggunakan kelas dengan semua anggota publik.
sumber
struct
di C ++ ( hampir ) sama dengan aclass
di C ++.public
, mengapa tidak menyimpannya di dalam paket paling tidak? Kelas seperti itu umumnya tidak cocok untuk digunakan dalam API (jika hanya untuknull
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/
sumber
Ya, kelas adalah yang Anda butuhkan. Sebuah kelas mendefinisikan tipe sendiri.
sumber
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; }
sumber
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.
sumber
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
sumber