Java反射,对象有什么类?
我正在尝试对小程序进行一些反思。 我发现了一些整数、字符串、对象等数组 例如,如果存在一个包含对象[]和对象[0]的字段。toString()=[I@7593c366 然后我知道它是一个整数数组。但是如果它说aa@98324ca33那是aa级吗? 我使用的是类加载器,所以我的第一个猜测是当我看到这一点时,我需要加载aa类(在@之前的部分,并在其中使用对象。但是我不确定@之前的部分是类。有人能说我这是对的吗?或者有其他想法吗Java反射,对象有什么类?,java,reflection,Java,Reflection,我正在尝试对小程序进行一些反思。 我发现了一些整数、字符串、对象等数组 例如,如果存在一个包含对象[]和对象[0]的字段。toString()=[I@7593c366 然后我知道它是一个整数数组。但是如果它说aa@98324ca33那是aa级吗? 我使用的是类加载器,所以我的第一个猜测是当我看到这一点时,我需要加载aa类(在@之前的部分,并在其中使用对象。但是我不确定@之前的部分是类。有人能说我这是对的吗?或者有其他想法吗 thnx!您不应该为此使用toString()——首先,它可以被覆盖。作
thnx!您不应该为此使用
toString()
——首先,它可以被覆盖。作为一个简单的示例:
Object x = "aa@98324ca33";
String bogusClassName = x.toString();
如果认为x
在这里指的是aa
类型的对象,那么显然是错误的——它指的是字符串
您只需对任何对象调用getClass()
,即可找到该对象的类:
Object x = new SomeType();
Class<?> clazz = x.getClass();
objectx=newsometype();
类clazz=x.getClass();
现在还不清楚你想做什么,或者从哪里获取信息,但是你绝对不应该使用
toString
来确定所涉及的类。你不应该使用toString()
进行此操作-首先,它可以被覆盖。作为一个简单的例子:
Object x = "aa@98324ca33";
String bogusClassName = x.toString();
如果认为x
在这里指的是aa
类型的对象,那么显然是错误的——它指的是字符串
您只需对任何对象调用getClass()
,即可找到该对象的类:
Object x = new SomeType();
Class<?> clazz = x.getClass();
objectx=newsometype();
类clazz=x.getClass();
现在还不清楚你想做什么或者从哪里获取信息,但是你绝对不应该使用
toString
来确定所涉及的类。是的,@之前的部分是类fqn,但你不应该依赖它。对象可以覆盖toString()
然后您的逻辑将失败
请改用
obj.getClass()
。是的,@之前的部分是类fqn,但您不应该依赖它。对象可以重写toString()
,然后您的逻辑将失败
改为使用obj.getClass()
。查看该类。只需调用对象上的getClass
即可检索其类,而不是使用toString
方法
Object anObject = ... ;
Class<?> clazz = anObject.getClass();
如果你有一个类
实例,你可以使用这个方法来确定一个对象是否属于这个类
看看这个类,只需调用对象上的getClass
,而不是使用toString
方法来检索它的类
Object anObject = ... ;
Class<?> clazz = anObject.getClass();
如果你有一个类
实例,你可以使用这个方法来确定一个对象是否属于这个类
为什么不直接使用对象[0]。getClass()?还有,为什么需要再次加载该类?而且您知道类通常不包含对象,不是吗?因此在其中使用对象并不十分准确。为什么不直接使用对象[0]。getClass()?另外,为什么需要再次加载该类?而且您知道类通常不包含对象,不是吗?因此在其中使用对象并不十分准确。