18.3.1获得Class对象
在java程序中获得Class对象通常有如下三种方式。
–1.使用Class类的forName()静态方法。该方法需要传入字符串参数,该字符串参数的值是某个类的全限定类名(必须添加完整包名)
–2调用某个类的class属性来获得该类对应的Class对象,例如Person.class将会返回Person类对应的Class对象
–3调用某个对象的getClass方法,该方法是java.lang.Object类中的一个方法,所以所有的对象都可以调用该方法,该方法将返回该对象所属类对应的Class对象。
大部分时候都使用Person.class 这种方法
这种方法的优势:
1.代码更加安全。程序在编译阶段就可以检查需要访问的Class对象是否存在
2.程序性能更好。以为这种方式无需调用方法,所以性能更好。
java8新增的方法参数反射
示例
package com.imust.regular_Expression;
import java.lang.reflect.Method;
import java.util.List;
import org.omg.Dynamic.Parameter;
class Test {
public void replace(String str,List<String> list){}
}
public class MethodParameterTest{
public static void main(String[] args) {
//获取String的类
Class<Test> clazz = Test.class;
Method replace = clazz.getMethod("replace", String.class,List.class);
//获取指定方法的参数个数
System.out.println(replace.getParameterCount());
//获取replace所有的参数信息
Parameter[] parameters = replace.getParameters();
int index = 1;
//遍历所有参数
for(Parameter p: parameters){
if(p.isNamePresent()){
System.out.println("第"+index+"个参数信息");
System.out.println("参数名"+p.getName());
System.out.println("形参类型"+p.getType());
System.out.println("泛型类型"+p.getParameterizedType());
}
}
}
}