Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 最佳做法是什么?_Java_Oop_Javabeans - Fatal编程技术网

Java 最佳做法是什么?

Java 最佳做法是什么?,java,oop,javabeans,Java,Oop,Javabeans,对于bean变量,Java的最佳编码标准是什么: 1。我应该使用基本数据类型吗? 2.我应该使用包装器类型吗? 或者两者都相同?我使用了基元类型 例如: private int i; private boolean b; public int getI() { } public void setI(int i) { this.i = i; } public boolean getB() { } public void setB(boolean b) { this.b =

对于bean变量,Java的最佳编码标准是什么:

1。我应该使用基本数据类型吗?
2.我应该使用包装器类型吗?

或者两者都相同?

我使用了基元类型

例如:

private int i;
private boolean b;

public int getI()
{
}

public void setI(int i)
{
    this.i = i;
}

public boolean getB()
{
}

public void setB(boolean b)
{
    this.b = b;
}

并使用setter和getter。谢谢,视情况而定。两者的存在都有很好的理由

应尽可能首选基本体。它们成本更低,并且不可为空,从而避免了很多潜在的bug

包装器可用于表示可空值(例如,在JPA中表示数据库中的可空列值,或在JAXB中表示XML元素的可选元素或属性)。

这取决于具体情况
例如,您的bean可能会被来自数据库的信息填充
根据定义,列可能包含可为空的数据
在这种情况下,您将考虑使用非初等类型-IE整数。BR> 但是,您可能希望使用基本类型+操作,因此会发生自动装箱/取消装箱(即,根据您的代码,自动从整数转换为整数),这可能会对性能造成一些影响

总之,

在可能的情况下尝试使用原语,在可能需要保留空值的情况下使用非原语

尽可能使用原语,但在需要存储空值时不要使用原语

示例:

Boolean isObject;
boolean isPrimitive;

int xPrimitive;
Integer xObject;
如果你存储这些值,你会发现它们并不相等

// isObject == null
// isPrimitive == false

// xPrimitive == 0
// xObject == null

因此,最佳实践是对您的应用程序有意义的。优化时,您希望在对象上使用原语以减少内存开销,但前提是它不会与您的业务和逻辑需求冲突。

通常最好使用原语而不是包装器。包装器对于以下方法非常有用:

Integer.toString(myInt);

此方法来自包装器类,但
myInt
是一个原语。一般情况下,原语将完成所有需要的操作。

字符串不是原语类型。更好的答案是“使用原语类型,除非您也需要能够表示“无值”。布尔属性的惯例是使用
is
而不是
get
,因此它应该是
公共布尔isB(){
。除非有充分的理由,否则不应该添加getter和setter。否则,它将倾向于成为一个贫血的模型,从而破坏封装,因为“行为”将在bean之外编码。