为了账号安全,请及时绑定邮箱和手机立即绑定
关注
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类的实例被称为某类(某事物具有的共同属性)的类类型,某类的类类型的实例就是我们常用的实例对象(参数具体化)。

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下载
官方微信