java删除默认的Double或int
您好,我正在寻找一个更清晰的实现,它介绍了如何检查默认的双倍值,例如-1.0
我对字符串的实现是:
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语句。这是很多重复的代码,我想把它推到它自己的原子函数中,但除了布尔值,我不知道什么是好的干净代码
基本上,我只想设置非默认值的值
# 1 楼答案
原双精度
double
作为基元类型不能包含null值。它只能容纳-1.0、0.0甚至NaN(一个特殊的浮点值,但我不太确定它的行为)因此,您无法检查原语
double
变量是否为空无论如何,您可以这样做:
如果是java。lang.Double
如果您的属性是
Double
(它是double的…对象表示),则可以为空。就在这种情况下,您可以创建一个defaultValue检查器方法您的支票
如果
if(o == null)
有效,那是因为Java将o原语double转换为Java。Double并进行对象比较(检查此自动装箱的Double是否为null…但装箱的原语值始终是存在的对象)检查对象的值
如果您有一个双重对象,并希望检查其值,我建议您:
它是:
equals
进行比较:您不希望比较对象引用,而是比较对象内部的值李>设置属性
不幸的是,在Java中,没有简单的方法通过引用将方法a传递给另一个方法B,以便在满足某些条件时B执行a。你可以使用反射,但我认为这太过分了。如果你想做的是减少你的代码,那么使用一些模板机制没有多大意义
所以。。。我的想法很简单:
在第一种情况下-“按原样设置值”-您可以执行以下操作:
在这段代码中,您总是设置值。如果objWrapper有一个空值(或任何您检查的值),那么要设置为obj的值将是它自己的当前值
在第二种情况下-“如果未设置,则使用默认值”-您可以执行以下操作:
请记住,如果您的obj。setProperty是一个可以使用null的对象,否则将强制使用某个常量值