Java có tương tự như C ++ không struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
Tôi cần sử dụng kiểu dữ liệu của riêng mình.
Câu trả lời:
Java chắc chắn không có cấu trúc :) Nhưng những gì bạn mô tả ở đây trông giống như một loại lớp JavaBean.
inline class
vào một thời điểm nào đó trong tương lai gần mà tôi tin rằng nó giống một cấu trúc hơn.
Tương tự trong Java với một cấu trúc sẽ là
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
và không có gì sai với điều đó trong những trường hợp thích hợp. Giống như trong C ++ thực sự về việc khi nào bạn sử dụng các câu trúc khi bạn sử dụng một lớp với dữ liệu được đóng gói.
Trên thực tế, cấu trúc trong C ++ là một lớp (ví dụ bạn có thể định nghĩa các phương thức ở đó, nó có thể được mở rộng, nó hoạt động chính xác như một lớp), sự khác biệt duy nhất là các sửa đổi truy cập mặc định được đặt thành công khai (đối với các lớp chúng được đặt thành riêng tư theo mặc định).
Đây thực sự là điểm khác biệt duy nhất trong C ++, nhiều người không biết điều đó. ; )
Java không có cấu trúc tương tự như cấu trúc của C ++, nhưng bạn có thể sử dụng các lớp với tất cả các thành viên công khai.
public
, tại sao không chỉ giữ chúng bên trong gói ít nhất? Các lớp như vậy thường không phù hợp để sử dụng trong API (nếu chỉ để null
tham khảo có thể có ). Luôn sử dụng khả năng hiển thị tối thiểu!
Với Project JUnion, bạn có thể sử dụng các cấu trúc trong Java bằng cách chú thích một lớp với chú thích @Struct
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
Thông tin thêm tại trang web của dự án: https://tehleo.github.io/junion/
Có, Java chưa có kiểu cấu trúc / giá trị. Tuy nhiên, trong phiên bản sắp tới của Java, chúng ta sẽ lấy inline class
nó tương tự như struct trong C # và sẽ giúp chúng ta viết mã miễn phí cấp phát.
inline class point {
int x;
int y;
}
Các cấu trúc "thực sự" thuần túy không được hỗ trợ trong Java. Ví dụ: C # hỗ trợ các struct
định nghĩa đại diện cho các giá trị và có thể được cấp phát bất cứ lúc nào.
Trong Java, cách duy nhất để có được giá trị gần đúng của cấu trúc C ++
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
mà không sử dụng (bộ đệm tĩnh hoặc danh sách) đang làm điều gì đó như
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
Vì vậy, chỉ cần cấp phát các biến hoặc định nghĩa tĩnh chúng thành một lớp.
firstName
,lastName
vàbirthYear
(hoặcyearOfBirth
tất nhiên).