我目前正在尝试用这样的逻辑拆开一个objekt
public String toString(Object x) throws IllegalArgumentException, IllegalAccessException {
if(i > 10000) {
throw new StackOverflowError("The Deserilesation of an objekt has overflowen");
}
i++;
if(x instanceof String) {
return String.valueOf(x);
}else if(x instanceof Integer) {
return String.valueOf(x);
}else if(x instanceof Boolean) {
return String.valueOf(x);
}else if(x instanceof Long) {
return String.valueOf(x);
}else if(x instanceof Float) {
return String.valueOf(x);
}else if(x instanceof Double){
return String.valueOf(x);
}else if(x instanceof Byte){
return String.valueOf(x);
}else if(x instanceof Character){
return String.valueOf(x);
}else {
String toreturn = "{";
for(Field f : x.getClass().getDeclaredFields()) {
f.setAccessible(true);
try {
toreturn += f.getName() + ":"+ toString(f.get(x)) + " ";
}catch (NullPointerException e) {
toreturn += f.getName() + ":Null ";
}
}
toreturn += "}";
return toreturn;
}
但是如果有一个int[]
那么我会得到像00000 @ 000000这样的standert tostring,我的问题我怎么能发现我有一个数组,我试过if(x instanceof Array)
但是没有数组类
答案 0 :(得分:3)
你可以这样做:
x instanceof int[]
但更普遍的是:
x.getClass().isArray()
答案 1 :(得分:1)
要知道数组的类名,请使用以下语法: - 的 array_name.getClass()。的getName()即可。要检查对象是否为数组,请使用 isArray()方法,如下所示: - array_name.getClass()。isArray()。有关更多说明,请参阅以下示例: -
class Sample{
public static void main(String args[]){
int arr[] = {1,2,3};
System.out.println(arr.getClass().isArray());
}
}
我希望它有所帮助。谢谢!