JAVA---反射类型

1.反射英文:reflection

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

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

2。反射机制可以用来:

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

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

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

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

3.Class

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

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

扫描二维码关注公众号,回复: 2333407 查看本文章
Random aRandom =new Random();
		Class class1 =aRandom.getClass();
		String name =class1.getName();
		System.out.println(name);

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

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()可以动态的创建一个类的实例。例如

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配合起来使用,可以根据存储在字符串中的类名动态创建一个对象(实例)。

猜你喜欢

转载自blog.csdn.net/qq_33188563/article/details/81172259