Java是否有C ++的类似物struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
我需要使用自己的数据类型。
Answers:
Java绝对没有结构:)但是,您在此处描述的内容看起来像JavaBean类。
inline class
在不久的将来能够实现,我相信它更像一个结构。
在Java中相当于struct的是
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
在正确的情况下,这没有错。实际上,在何时使用带有封装数据的类时,与何时使用struct verses几乎完全相同。
实际上,C ++中的结构是一个类(例如,您可以在其中定义方法,可以对其进行扩展,它就像类一样工作),唯一的区别是默认访问修饰符设置为public(对于类,它们设置为private默认)。
这确实是C ++的唯一区别,很多人不知道。; )
Java没有C ++结构的类似物,但是您可以对所有公共成员使用类。
public
,为什么不至少将它们保留在包装内部?这样的类通常不适合在API中使用(如果仅用于可能的null
引用)。始终使用最小可见度!
使用Project JUnion,您可以通过使用@Struct批注对类进行批注来在Java中使用结构
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
有关该项目网站的更多信息,请访问:https : //tehleo.github.io/junion/
是的,Java还没有结构/值类型。但是,在即将发布的Java版本中,我们将获得inline class
与C#中的struct类似的内容,这将有助于我们编写无分配代码。
inline class point {
int x;
int y;
}
Java不支持“真正”纯净的结构。例如,C#支持struct
代表值的定义,并且可以随时分配。
在Java中,获得C ++结构近似值的独特方法
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
不使用(静态缓冲区或列表)做类似
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
因此,只需分配变量或将其静态定义为类即可。
firstName
,lastName
和birthYear
(或yearOfBirth
课程)。