2

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

1. 我应该使用原始数据类型吗?
2.我应该使用包装类型吗?

还是两者都一样?

4

5 回答 5

11

这取决于。两者的存在都是有充分理由的。

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

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

于 2012-09-22T07:54:29.950 回答
5

那要看。
例如,您的 bean 可能会填充来自数据库的信息。
根据定义,列可能包含可为空的数据。
在这种情况下,您将考虑使用非基本类型——即整数。
但是,您可能希望使用原始类型 + 操作,因此会发生自动装箱/拆箱(即 - 自动从整数转换为整数,具体取决于您的代码),这可能会稍微损害性能。

总而言之,
尽量使用原始的,在可能需要保持 Null 值的情况下使用非原始的。

于 2012-09-22T07:55:06.163 回答
3

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

例子:

Boolean isObject;
boolean isPrimitive;

int xPrimitive;
Integer xObject;

如果您存储这些值,您会发现它们不相等。

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

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

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

于 2012-09-22T07:58:22.667 回答
2

通常最好使用原语而不是包装器。包装器非常适合诸如

Integer.toString(myInt);

这个方法来自一个包装类,但myInt它是一个原语。在一般使用中,原语将完成您需要的所有工作

于 2012-09-22T07:58:49.250 回答
1

我使用原始类型。

例如:

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。谢谢

于 2012-09-22T07:52:17.410 回答