Java中Class Type 类类型是怎么回事?

  Java中三种方式可以用来表示Class Type(类的实例对象), 第一种,通过隐藏的静态成员变量class来表示;第二种,通过调用该类的对象的getClass方法;第三种,通过Class.forName来动态加载类;拿到该类的实例对象后,都可以通过调用newInstance方法,来模拟new classA()的效果,具体见下面例子

复制代码
 1 package classTest;
 2 
 3 /**
 4  * 如何表示类的实例对象,也就是类类型(Class Type),有三种方法,也可以通过类类型来创建类的对象实例
 5  * @author Wang
 6  *
 7  */
 8 public class ClassDemo1 {
 9     public static void main(String[] args) {
10         
11         // Foo的实例对象如何表示,foo1就表示出来了
12         Foo foo1 = new Foo();
13         
14         // Foo这个类 也是一个实例对象,Class类的实例对象,如何表示呢,任何一个类都是Class的实例对象,这个实例对象有三种表示方式
15         // 第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
16         Class c1 = Foo.class;
17 
18         // 第二种表示方式--->已经知道该类的对象通过getClass方法
19         Class c2 = foo1.getClass();
20 
21         // 第三种表达方式--->通过Class.forName方法动态加载类
22         Class c3 = null;
23         try {
24             c3 = Class.forName("com.imooc.reflect.Foo");
25         } catch (ClassNotFoundException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29 
30         /*
31          * 官网 c1 ,c2 表示了Foo类的类类型(class type) 万事万物皆对象, 类也是对象,是Class类的实例对象
32          * 这个对象我们称为该类的类类型
33          */
34         
35         // 不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象
36         System.out.println(c1 == c2);
37 
38         System.out.println(c2 == c3);
39 
40         // 我们完全可以通过类的类类型创建该类的对象实例---->通过c1 or c2 or c3创建Foo的实例对象
41         try {
42             // 需要有无参数的构造方法
43             Foo foo = (Foo) c1.newInstance();
44             foo.print();
45         } catch (InstantiationException e) {
46             // TODO Auto-generated catch block
47             e.printStackTrace();
48         } catch (IllegalAccessException e) {
49             // TODO Auto-generated catch block
50             e.printStackTrace();
51         }
52 
53     }
54 }
55 
56 class Foo {
57 
58     void print() {
59         System.out.println("foo");
60     }
61 }
复制代码

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值