我是靠谱客的博主 执着航空,这篇文章主要介绍JAVA---反射类型,现在分享给大家,希望可以做个参考。

1.反射英文:reflection

反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。

能够分析类能力的程序称为反射

2。反射机制可以用来:

1.在运行时分析类的能力;

2.在运行时查看对象,例如,编写了一个toString方法供所有类使用。

3.实现通用的数组操做代码。

利用Method对象,这个对象很像C++的函数指针。

3.Class

1.保存这些信息的类称为Class

如果类在一个包里,包的名字也作为类名的一部分,例如:

复制代码
1
2
3
4
Random aRandom =new Random(); Class class1 =aRandom.getClass(); String name =class1.getName(); System.out.println(name);

还可以调用静态方法forName获得类名对象的Class对象。

复制代码
1
2
3
4
5
6
7
8
String className ="java.util.Random"; try { Class class1 =Class.forName(className); System.out.println(class1); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }

 

 class。forName这个方法只有在className是类名或接口名时才能够执行。否则,forName方法将抛出一个异常,所以无论何时使用这个方法一定要加try catch语句。

 

 

还有一个非常有用的方法newInstance()可以动态的创建一个类的实例。例如

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Object cl; try { cl =Class.forName("qcby.Person").newInstance(); Person person =(Person)cl; System.out.println(person.getName()); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }

 

这个方法的核心是,cl.Class.forName("包名.类名").newInstance();

将forName与newInstance配合起来使用,可以根据存储在字符串中的类名动态创建一个对象(实例)。

最后

以上就是执着航空最近收集整理的关于JAVA---反射类型的全部内容,更多相关JAVA---反射类型内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部