类的动态加载
有动态肯定有静态,那么首先要分清什么是编译、什么是运行
简单的理解是写在源代码中的new就是静态加载,编译的时刻就知道需要加载使用到的类。
编译的时候不确定的,在运行的时候需要一些输入参数才确定要加载的类的,就是动态加载
class.forName(类名);这个动态加载方法。
这个方法非常常用。
getName()
获取类的带包名的名称。
Class c = String.class;
c.getName();
getSimpleName()
获取不带包名的名称
Class c = String.class;
c.getSimpleName();
getMethods()
获取类的方法,获取所有public的函数,包括父类继承而来的
getReturnType()
获取方法的返回值类型的类类型
getParameterTypes()
获取方法的参数列表的类类型
import java.lang.reflect.Method;
Class c = Student.class;
Method[] ms = c.getMethods();
for(int i=0 ; i < ms.length; i++){
Class returnType = ms[i].getReturnType();
System.out.print(returnType.getName()+" "ms[i].getName());
System.out.print("(");
Class[] paramTypes = ms[i].getParameterTypes();
for(Class class1 :paramTypes){
System.out.prin(class1.getName();+", ");
}
System.out.print(")");
}
getDeclaredMethods()
获取所有该类自己声明的方法