您的位置:首页 > 编程语言 > Java开发

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

2017-10-20 13:23 489 查看
万事万物皆是对象,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老师的辛勤付出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class 对象