Java-反射(一) Class类的使用
2017-10-20 13:23
489 查看
万事万物皆是对象,class也一样。
在Java中,系统定义的和自己定义的类其实都是Class类(java.lang.Class)的对象,如
Foo类就是Class类的对象
而类类型(class type)则是表示类的Class类型,如
c1,c2就是Foo类的类类型,而且一个类只可能是Class类的一个实例对象,即:
2、 已知类的对象,通过getClass()得到class对象,如
3、 通过Class.forName(String className)获取class对象,如果找不到,抛出ClassNotFoundException异常,如:
以上大部分内容来源于慕课网的”反射——Java高级开发必须懂的”课程,网址是http://www.imooc.com/learn/199,感谢Cedar老师的辛勤付出!
在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学习之反射(1):Class类和java.lang.reflect包的使用
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- Java反射(一)----- Class类的使用
- Java反射(一)-Class类的使用
- java基础之反射(2.class类的使用)
- Java反射学习总结(1)——Class类的使用
- java反射学习笔记(1)-----Class类的使用
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- 黑马程序员——【Java反射学习】Class类的使用
- JAVA 反射 之 class类的使用
- Java反射Class类的使用
- 19、Java入门—反射之Class类的使用
- 使用Java 5特性来简化反射编程
- JAVA反射使用手记
- java反射调用配置文件构造类对象,使用其方法
- JAVA反射和CLASS类
- 使用反射机制将纯Java对象放入数据库中
- java反射的使用
- java基础教程之Class类和反射API介绍
- 使用JAVA的反射机制反射带有数组参数的私有方法