ClassObject.getClass,ClassName.class和Class.forName(" ClassName")之间的区别 [英] Distinction between ClassObject.getClass,ClassName.class and Class.forName("ClassName")

查看:123
本文介绍了ClassObject.getClass,ClassName.class和Class.forName(" ClassName")之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望了解Class.forName(ClassName)和ClassObject.getClass
是否返回类的运行时实例。那么为什么在比较从两个fetches获得的结果Class对象时我们得到一个布尔值false(如果我们使用==或equals进行比较)。

我也想知道调用.class方法的确切用法是什么关于类名。我读过它是在编译时确定的,但是用于什么目的。 Class.forName(ClassName)不会足够吗?

谢谢

I wish to understand if both Class.forName("ClassName") and ClassObject.getClass return runtime instance of the class. Then why on comparing the resulting Class object obtained from the two fetches us a Boolean false(if we compare using == or equals).
I also want to know what is the exact use of .class method called on the class name.I have read that it is determined at compile time etc but to what purpose. Won't Class.forName("ClassName") suffice??
Thanks

推荐答案

Class.forName 加载并初始化类。 obj.getClass()返回加载到permgen中的类对象。如果类由同一个类加载器加载 == 必须返回true。如果您看到 false = =比较,则意味着它们由不同的类加载器加载。

Class.forName loads and initializes the class. obj.getClass() returns the class object loaded into permgen. If the class is loaded by the same classloader == has to return true. When you are see false for == comparison it means that they are loaded by different classloaders.

这篇关于ClassObject.getClass,ClassName.class和Class.forName(" ClassName")之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆