Java-反射(一) Class类的使用

万事万物皆是对象,class也一样。
在Java中,系统定义的和自己定义的类其实都是Class类(java.lang.Class)的对象,如

class Foo{
    void print(){
        System.out.println("foo");
    }
}

Foo类就是Class类的对象

类类型(class type)则是表示类的Class类型,如

Foo f1 = new Foo();
Class c1 = Foo.class;
Class c2 = Foo.class;

c1,c2就是Foo类的类类型,而且一个类只可能是Class类的一个实例对象,即:

System.out.println(c1==c2);// true

获得类的类类型有三种方法:

1、每个类有一个Class的静态变量,可直接获取,如

Class c1 = Foo.class;

2、 已知类的对象,通过getClass()得到class对象,如

Foo f1 = new Foo();
Class c2 = f1.getClass();

3、 通过Class.forName(String className)获取class对象,如果找不到,抛出ClassNotFoundException异常,如:

Class c3=null;
        try {
            c2 = Class.forName("Foo");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

还可以通过类类型来创建类的实例对象,如

try {
            Foo foo= (Foo) c1.newInstance();//需要调用无参数的调用方法
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }





以上大部分内容来源于慕课网的”反射——Java高级开发必须懂的”课程,网址是http://www.imooc.com/learn/199,感谢Cedar老师的辛勤付出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值