为了账号安全,请及时绑定邮箱和手机立即绑定

Foo.class和Foo.class.getClass为什么不等

请问:

Class f1 = Foo.class;

Class f4 = f1.getClass();

System.out.println(f1==f4);

它俩为什么不等?

感觉上好像f1是f4的爹的感觉(不是继承关系),这种理解对吗?

正在回答

5 回答

测试代码如下。

class Foo {
}

public class plusplusi {
 public static void main(String[] args) {
  Class f1 = Foo.class;
  Class f4 = f1.getClass();
  System.out.println(f1 == f4);
  System.out.println(f1);
  System.out.println(f4);
 }
}

控制台输出结果如下

false
class test.Foo
class java.lang.Class


1 回复 有任何疑惑可以回复我~

Class的实例对象都不一样的.第二个是Class类调用getClass,第一个是Foo类调用getClass方法,对象不一样吧

0 回复 有任何疑惑可以回复我~

谢谢,明白了

0 回复 有任何疑惑可以回复我~

这里f1是Class类的实例对象(也就是Foo这个类,它是Class类的对象);

你使用f1.getClass()获得的是Class这个大类,不是上面Foo这个类,所以当然不相等。

如果你定义了Foo foo =new Foo() (这里foo是Foo的实例),

再调用foo.getClass()便能获得Foo了。

2 回复 有任何疑惑可以回复我~

f1 与 f4的引用不是指向同一个对象 肯定为false,    通过反射方式1   Class c = (类名)Foo.class;

反射方式2  首先实例化Foo对象  Foo f = new Foo();  然后 Class c2 = (对象名)f.getClass();   这样 c 和 c2 的引用指向同一对象(Foo)   c 和 c2 的比较为true。。。

4 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Foo.class和Foo.class.getClass为什么不等

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信