我知道getClass()方法java.lang.Object.但在我的申请中,我知道我的所有课程.那么,使用这种方法的实际目的是什么?
Ste*_*n C 11
但在我的申请中,我知道我的所有课程.那么,使用这种方法的实际目的是什么?
所以,如果你写这个,你还知道真正的类things[0]是什么吗?
Object[] things = new Object[]{
"Hi mum", new Integer(42), /* and a whole bunch more */};
shuffle(things);
Run Code Online (Sandbox Code Playgroud)
从理论上讲,你可以things[0]在instanceof表达式上使用长序列来解决这个问题,但这很痛苦.这解决了这个问题.
Class cls = things[0].getClass();
Run Code Online (Sandbox Code Playgroud)
现在,我会告诉你,你不经常需要这样做.但是当你这样做时,功能性Object.getClass()是必不可少的.
正如其他答案所指出的那样,该getClass()方法对于利用反射来绕过静态类型限制的应用程序非常重要.
我想,另一个问题是该Object.getClass()方法的存在是否对JVM性能有任何影响.答案是否定的.该方法仅公开必须存在的信息才能实现instanceof运营商.此信息通常由垃圾收集器使用.