Java 删除默认的Double或int
您好,我正在寻找一个更清晰的实现,它介绍了如何检查默认的双倍值,例如-1.0 我对字符串的实现是:Java 删除默认的Double或int,java,Java,您好,我正在寻找一个更清晰的实现,它介绍了如何检查默认的双倍值,例如-1.0 我对字符串的实现是: private static String stringNullChecker(String o) { if(o == null || o.equals("?") || o.equals("")) { return null; } else { return o; } } 所以我可以这样称呼它: obj.se
private static String stringNullChecker(String o)
{
if(o == null || o.equals("?") || o.equals(""))
{
return null;
}
else
{
return o;
}
}
所以我可以这样称呼它:
obj.setExDestination(stringNullChecker(wrapperObj.getExchange()));
但是,如果我使用double尝试相同的方法,它将抛出空指针错误
因此,目前正在实施:
if(doubleNullChecker(wrapperObj.getPrcCcy()) != null)
{
obj.setSettlCurrFxRate(wrapperObj.getPrcCcy());
}
但我必须对每个double/int值执行If语句。这是很多重复的代码,我想把它推到它自己的原子函数中,但除了布尔值,我不知道什么是好的干净代码
基本上,我只想在具有非默认值时设置该值。原语双精度
double
作为基元类型不能包含空值。它只能容纳-1.0、0.0甚至NaN(一个特殊的浮点值,但我不太确定它的行为)
因此,您无法检查原语double
变量是否为空
无论如何,您可以这样做:
public static double notNaN(double value, double defaultValue) {
return Double.isNaN(value)? defaultValue: value;
}
如果是java.lang.Double
如果您的属性为双精度(它是双精度的对象表示形式),则可以为空。就在这种情况下,您可以创建一个defaultValue检查器方法
public static double notNull(Double doubleObj, double defaultValue) {
return doubleObj == null? defaultValue: doubleObj.doubleValue();
}
// use this way (getPropertyDouble() returns a java.lang.Double)
notNull(myObj.getPropertyDouble(), -1.0);
您的支票
如果If(o==null)
起作用,这是因为Java将o原语double转换为Java.lang.double并进行对象比较(检查此自动装箱的double是否为null…但装箱的原语值始终是存在的对象)
检查对象的值
如果您有一个双重对象,并希望检查其值,我建议您:
doubleObj.equals(Double.valueOf(1.0D));
它是:
- 使用
进行比较:您不希望比较对象引用,而是比较对象内部的值equals
- 与另一个Double对象进行比较:这就是为什么我编写Double.valueOf(1.0D)来显式地将值框起来
obj.setProperty(notNull(objWrapper.getProperty(), obj.getProperty()));
obj.setProperty(notNull(objWrapper.getProperty(), HERE_GOES_YOUR_DEFAULT_VALUE));
在这段代码中,您总是设置值。如果objWrapper有一个空值(或任何您检查的值),那么要设置为obj的值将是它自己的当前值
在第二种情况下-“如果未设置,则使用默认值”-您可以执行以下操作:
obj.setProperty(notNull(objWrapper.getProperty(), obj.getProperty()));
obj.setProperty(notNull(objWrapper.getProperty(), HERE_GOES_YOUR_DEFAULT_VALUE));
请记住,如果您的obj.setProperty是一个对象,则可以使用null,否则您将被迫使用某个常量值。我不确定在出现null或默认值的情况下您要做什么。你想在默认值的情况下返回null吗?如果wrapperObj值是默认值,比如说-1,我不想在Obj上设置它。你的回答解释了如何检查与默认值的相等性,但它并不能解决他在get方法不返回默认值时只调用setter方法的问题。对。然后我再加上一个结论。>它只能容纳-1.0、0.0甚至NaN——除了所有其他数字之外,浮点数还可以容纳0.0和-0.0、±无穷大和NaN