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

求解什么是类类型感觉要疯了

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~

294761325 (提问者)

懂了感谢 !!
#1 2017-02-27 回复

概念

    Class类是所有类(注意是对象)的共有信息的抽象,比如该类实现的接口、对应的加载器、类名等等。一句话,类类型保存了每个类所对应的类型信息。每一个类都有一个Class对象,这个对象在类被加载后由JVM自动构造。也是由JVM管理的,Class类是没有公共的构造方法的。
    Class对象对于类来说就像是,DNA对于每个人,里面有你的一切生物信息。java中可以通过Class来取得类的实例,也许将来的将来通过你的DNA也能得到你的另一个实例。科幻电影里是已经实现了。ok,概念应该有个初步的认识了。

参考http://blog.csdn.net/zhuojiajin/article/details/39255815

2017-02-27
回复 1

Class类里面包含了人类能抽象出来的世界万物里面的所有属性(声光电热);Class类的实例被称为某类(某事物具有的共同属性)的类类型,某类的类类型的实例就是我们常用的实例对象(参数具体化)。

2017-06-11
回复 1

现在疯吧  反正早晚都得疯 晚疯不如早疯

2017-02-27
回复 0

首先如果你是初学者我不建议你把反射这里看很深,会影响你后面写代码的思路。反射的东西初学者浅尝辄止就好。只要知道反射是动态加载类,能和静态加载类区分开就行。等你用Spring+SpringMVC开发一段时间,遇到瓶颈了。再回来看效果会好很多。现在给你讲很难讲清楚,你可能面向对象的抽象概念都没理解。

2017-02-27
回复 0

294761325 (提问者)

刚刚学习框架 谢谢你的建议
#1 2017-02-27 回复

建议大家看一本书《java从入门到放弃》

2017-05-31
回复 0

Class c1 = new Foo() 我的理解是可以看出是Fool类的向上转型,创建了一个父类的实例

2019-07-27
回复 0

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信