Java反射,对象有什么类



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 );

相关内容

  • 没有找到相关文章

最新更新