求解什么是类类型感觉要疯了
Class c1 = Foo.class;
c1就是Foo类的类类型 如何分解这句话?
c1是Foo类的类也就是Class的类型?可以这样理解?
Class c1 = Foo.class;
System.out.println(c1.getName());
为什么结果又是Foo?
Class c1 = Foo.class;
c1就是Foo类的类类型 如何分解这句话?
c1是Foo类的类也就是Class的类型?可以这样理解?
Class c1 = Foo.class;
System.out.println(c1.getName());
为什么结果又是Foo?
2017-02-27
我是这么理解的:
Foo是一个类,没错吧;
然后这个类它有各种各样的属性,比如什么类名啊,类性别啊(假装它有),类体积啊(假装它有),类周长啊(假装它有)等等;
我们现在只不过取出来其中一个这个类的其中一个非常牛逼的属性:也就是这个类的类型(简称类(的)类型),这个类类型的牛逼之处在于:只要有了这个类的类型,我们就可以知道它的类名,它所有的成员变量,甚至它所有的的方法名;就像你知道了一个人的身份证号码一样,这个人的什么名字性别年龄指纹你都能通过这个身份证号码查到。
假设这个Foo这个类是个人的话,那么它的类类型就相当于这个人的身份证号码;
我们用Class c1 = Foo.class;这个语句取得了这个类的身份证号码(类类型),然后通过c1.getName();调用了取出这个类名字的方法getName(),那么你自然会看到这个类的名字,也就是Foo~
概念
Class类是所有类(注意是对象)的共有信息的抽象,比如该类实现的接口、对应的加载器、类名等等。一句话,类类型保存了每个类所对应的类型信息。每一个类都有一个Class对象,这个对象在类被加载后由JVM自动构造。也是由JVM管理的,Class类是没有公共的构造方法的。
Class对象对于类来说就像是,DNA对于每个人,里面有你的一切生物信息。java中可以通过Class来取得类的实例,也许将来的将来通过你的DNA也能得到你的另一个实例。科幻电影里是已经实现了。ok,概念应该有个初步的认识了。
参考http://blog.csdn.net/zhuojiajin/article/details/39255815
举报