请帮我填写我的isEmpty方法:
public static boolean isEmpty(Object test){ if (test==null){ return true; } if (test.getClass().isArray()){ //??? } if (test instanceof String){ String s=(String)test; return s==""; } if (test instanceof Collection){ Collection c=(Collection)test; return c.size()==0; } return false; }
我将使用什么代码来确定如果我正在处理一个数组,如果它的长度为零,它将返回true?我希望它的工作,无论类型是否是int [],Object []. (只是你知道,我可以告诉你,如果你把一个int []放入一个Object []变量,它会抛出一个异常.)
解决方法
您可以使用
java.reflect.Array
中的助手方法getLength(Object):
public static boolean isEmpty(Object test){ if (test==null){ return true; } if (test.getClass().isArray()){ return 0 == Array.getLength(test); } if (test instanceof String){ String s=(String)test; return s.isEmpty(); // Change this!! } if (test instanceof Collection){ Collection c=(Collection)test; return c.isEmpty(); } return false; }
请注意,您不能使用
boolean empty = (someString == "");
因为那是不安全的.为了比较字符串,请使用String.equals(String),或者在这种情况下,只需检查长度是否为零.