Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,假设我们有一个名为Foo的类,obj.getClass().getName()和Foo.class.getName()如何获取相同的结果?_Java_Class_Object - Fatal编程技术网

在Java中,假设我们有一个名为Foo的类,obj.getClass().getName()和Foo.class.getName()如何获取相同的结果?

在Java中,假设我们有一个名为Foo的类,obj.getClass().getName()和Foo.class.getName()如何获取相同的结果?,java,class,object,Java,Class,Object,假设我有一个名为Foo的类的实例。当我调用abc.getClass().getName()时,我相信我实际上是在调用类“”。getName()。所以,我的问题是,这与Foo.class.getName()有什么相同之处?Foo.class.getName()是本机实现吗?Foo.class是类型为class的静态实例;在运行时只有一个这样的实例* 如果obj的类型为Foo,则obj.getClass()根据定义返回Foo.class *如果您有多个类加载器,这可能会变得奇怪,我的知识在这一点上

假设我有一个名为Foo的类的实例。当我调用abc.getClass().getName()时,我相信我实际上是在调用类“”。getName()。所以,我的问题是,这与Foo.class.getName()有什么相同之处?Foo.class.getName()是本机实现吗?

Foo.class
是类型为
class
的静态实例;在运行时只有一个这样的实例*

如果
obj
的类型为
Foo
,则
obj.getClass()
根据定义返回
Foo.class



*如果您有多个类加载器,这可能会变得奇怪,我的知识在这一点上变得模糊…

如果您在
Foo
的实例上调用
getClass()
,返回类型是
Classyou调用元素上的getClass,要么是类(您是什么类?)要么是实例(您是什么类的实例?)由于两者都是相同的,所以它们返回的结果是相同的。谢谢,这是有意义的-Foo.class是实例,但实例可以有一个。以他们的名义?这可能是一个愚蠢的基本问题。@abhishekpalakkalliyath:
Foo.class
只是一个表达式,其计算结果引用了唯一的
实例;它不是一个变量名(或类似的名称)。谢谢-那么,Foo.class在哪里-什么保存它-比如哪个对象的实例保存Foo.class?-它是JVM吗?这样的表达式有名称吗?像班级象征吗?哦,是的!类文本!
Foo instanceOfFoo = new Foo();
assertEquals(Foo.class, instanceOfFoo.getClass());  // Succeeds
instanceOfFoo = new SubTypeOfFoo();
assertEquals(Foo.class, instanceOfFoo.getClass());  // Fails.