我想创建一个方法,该方法检查每一个对象的值是empty.If输入对象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
。有人可以向我解释吗?
float[]
不是instanceof Object[]
。如果要检查所有类型的数组,则可能要从对象获取类并检查其isArray
方法。然后,您可以使用Array.getLength
来获取它的长度(因为奇怪的是,您不能使用Class#getField
来获取length
字段):
import java.lang.reflect.*;
class Validator {
public static void main(String args[]) throws Exception {
int[] a = {};
float[] b = {};
Integer[] c = {};
Float[] d = {};
System.out.println(Validator.isEmpty(a)); // true
System.out.println(Validator.isEmpty(b)); // true
System.out.println(Validator.isEmpty(c)); // true
System.out.println(Validator.isEmpty(d)); // true
System.out.println(Validator.isEmpty(new float[3])); // false (just double-checking)
}
public static boolean isEmpty(Object input) {
if (input == null) {
return true;
}
if (input instanceof String) {
if (((String) input).trim().length() == 0) {
return true;
}
}
if (input.getClass().isArray()) {
return Array.getLength(input) == 0;
}
return false;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句