我知道 java.lang.Object
中的 getClass()
方法。但是在我的申请中,我知道我所有的类(class)。那么,使用这种方法的实际目的是什么?
最佳答案
But In my application, I know all of my classes. So, What is the actual purpose of using this method?
所以如果你写这个,你还知道things[0]
的真正类是什么吗?
Object[] things = new Object[]{
"Hi mum", new Integer(42), /* and a whole bunch more */};
shuffle(things);
理论上,您可以使用关于 instanceof
表达式的长系列计算出 things[0]
类,但这很痛苦。这解决了问题。
Class cls = things[0].getClass();
现在,我向您保证,您经常需要做这种事情。但是,当您这样做时,Object.getClass()
的功能几乎是必不可少的。
正如其他答案所指出的那样,getClass()
方法对于使用反射来绕过静态类型限制的应用程序非常重要。
我想,另一个问题是 Object.getClass()
方法的存在是否对 JVM 性能有影响。答案是否定的。该方法仅公开为实现 instanceof
运算符而必须存在的信息。此信息通常由垃圾收集器使用。
关于java - 我们需要 java.lang.Object 的 getClass() 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7398088/