im正在尝试对小程序进行一些反思。我发现了一些int、字符串、对象等数组。
例如,如果有一个字段带有object[]和object[0]。toString()=[I@7593c366那么我知道它是一个整数数组。但是如果上面写着呢aa@98324ca33那是上课吗?我使用了一个classloader,所以我的第一个猜测是,当我看到这个时,我需要加载aa类(@之前的部分,并使用其中的对象。但我不确定@前面的部分是类。有人能说我这是对的吗?或者有其他想法吗?
thnx!
您不应该为此使用toString()
——首先,它可能已经被覆盖。举个简单的例子:
Object x = "aa@98324ca33";
String bogusClassName = x.toString();
如果认为x
在这里指的是aa
类型的对象,那显然是错误的——它指的是字符串。
只需调用getClass()
就可以找到任何对象的类:
Object x = new SomeType();
Class<?> clazz = x.getClass();
首先还不清楚你想做什么,也不清楚你从哪里获得信息,但你绝对不应该使用toString
来确定所涉及的类。
是的,@之前的部分是类fqn,但您不应该依赖它。对象可以覆盖toString()
,然后您的逻辑将失败。
请改用obj.getClass()
。
看看类java.lang.Class
。只需对对象调用getClass
即可检索其类,而不必使用toString
方法
Object anObject = ... ;
Class<?> clazz = anObject.getClass();
如果你想检查它是否是一个数组,你可以使用Class#isArray()
方法
clazz.isArray()
另一种方式也是可能的。如果您有一个Class
实例,您可以使用Class#isInstance( Object )
方法来确定对象是否属于此类
clazz.isInstance( anObject );