我想创建一个方法,检查每个对象的值是空的。如果输入对象是null
然后return true;
。如果输入是数组类型,请检查它的长度。下面是我的方法来实现这个逻辑如何检查原始空数组
public static boolean isEmpty(Object input) {
if (input == null) {
return true;
}
if (input instanceof Collection) {
if (((Collection<?>) input).size() == 0) {
return true;
}
}
if (input instanceof String) {
if (((String) input).trim().length() == 0) {
return true;
}
}
if (input instanceof Object[]) {
if (((Object[]) input).length == 0) {
return true;
}
}
return false;
}
但问题是,当我作为这样
int[] a = {};
float[] b = {};
Integer[] c = {};
Float[] d = {};
System.out.println(Validator.isEmpty(a));
System.out.println(Validator.isEmpty(b));
System.out.println(Validator.isEmpty(c));
System.out.println(Validator.isEmpty(d));
我不知道为什么a
和b
是false
测试。有人可以解释我吗?
*“我不知道为什么A和B都是假的。” *你有没有检查了当你执行'new float [0] instanceof Object []'时得到了什么? –
这种方法有特定的原因吗?你有没有考虑过使用三种不同的'isEmpty'方法,它们采用不同的类型参数? – pathfinderelite
@ T.J.Crowder糟糕!我得到了'不兼容的条件操作数类型float []和Object []' – Cataclysm