我试图对applet做一些反思。 我找到的东西是一些整数,字符串,对象等数组。
例如,如果有一个带有对象[]和对象[0]的字段.toString()= [I @ 7593c366 然后我知道它是一个整数数组。但是,如果它说aa @ 98324ca33是它的班级呢? 我正在使用一个类加载器,所以当我看到这个时我的第一个猜测我需要加载aa类(在@之前的部分,并在其中使用该对象。但我不确定该部分是否为@是该类。可以有人说我这是对的吗?还是有其他想法?
日Thnx!
答案 0 :(得分:5)
你不应该使用toString()
- 首先,它可以被覆盖。作为一个简单的例子:
Object x = "aa@98324ca33";
String bogusClassName = x.toString();
如果x
在这里引用类型为aa
的对象,则显然是错误的 - 它指的是字符串。
您只需在其上调用getClass()
即可找到任何对象的类:
Object x = new SomeType();
Class<?> clazz = x.getClass();
目前还不是很清楚你要做什么或者从哪里获取信息,但你肯定不应该使用toString
来确定所涉及的课程。
答案 1 :(得分:2)
是的,@之前的部分是fqn类,但你不应该依赖它。对象可以覆盖toString()
,然后您的逻辑将失败。
改为使用obj.getClass()
。
答案 2 :(得分:2)
查看班级java.lang.Class
。只需在对象上调用getClass
即可检索其类,而不是使用toString
方法
Object anObject = ... ;
Class<?> clazz = anObject.getClass();
如果要检查它是否是数组,可以使用Class#isArray()
方法
clazz.isArray()
另一种方式也是可能的。如果您有Class
实例,则可以使用Class#isInstance( Object )
方法确定对象是否属于此类
clazz.isInstance( anObject );