这可能是一个非常愚蠢的问题,但我不知道如何解决这个问题。
int num;
String str;
float flt;
我定义了三个变量,一个int,一个String,一个float。比我执行以下操作:
Object a = num;
Object b = str;
Object c = flt;
如何检查 a、b 或 c 对象的默认值?我知道 String
为 null
,int
为 0
,0.0
对于float
,但是有没有办法做一些事情:
if(a==nullValue(a) && b==nullValue(b) && c==nullValue(c))
因此它等于:
if(a==0 && b==null && c==0.0)
我只是得到了传递的三个 a、b、c 对象,所以我不知道它们是什么类型。
最佳答案
Java 是一种强类型语言,您试图击败而不是利用它的核心优势之一。
从技术上讲,您可以实现您想要的,通常您必须针对所有可能的原始类型+ null 测试您的Object obj
(因为您不知道这个对象真正是什么是):
static boolean isDefaultValue(Object obj) {
if (obj == null // non-primitive
|| obj.equals((byte) 0) // default for byte
|| obj.equals((short) 0) // short
|| obj.equals((int) 0) // int
|| obj.equals(0L) // long
|| obj.equals(0.0f) // float
|| obj.equals(0.0d) // double
|| obj.equals('\u0000') // char
|| obj.equals(false)) { // boolean
return true;
}
return false;
}
但是,我真的鼓励您修改您的设计,并问自己为什么通过将所有内容强制转换为 Object
来完全删除数据类型,而不是这样做。这可能会导致不可读且高度危险的代码。
说出您的原因,我们可能会帮助您找到更好的解决方案。
关于java - 检查不同对象的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22922751/