java - 我们需要 java.lang.Object 的 getClass() 方法吗?

标签 java oop

我知道 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/

相关文章:

java - 从 java 将参数传递给 c 代码

python - 您是否主要将Python用于其功能性或面向对象的功能?

c# - 简化 C# 中的组合接口(interface)

Java Spring启动: Not able to access @Bean defined in @Configuration

java - 我无法在 SQLite 中按 id 删除某些行

java - Android studio 从 2.1 更新到 2.3 后出现错误(无法启动)

java - SmartGwt 和 hibernate 用于数据库连接

java - 过滤器/组件模式而不是笨拙的继承?

c# - 单击后更改按钮文本,然后再次单击后将其更改回

javascript - 对象列表因某些别名而损坏