Java程序在编译时将会进行静态类的加载,而在运行时才进行动态类的加载。
一般大多数关键字也都有类类型
以下程序是用于实现获取所接收的类当中的方法信息,并对其进行输出操作
package 反射机制;
import java.lang.reflect.*;
public class ClassUtil {
//打印类的信息包括类的成员函数和类的成员变量
public static void printClassMessage(Object obj)
{
// 首先要获取类的类型
Class c=obj.getClass();//实例化class类的实例化对象,传入的参数属于哪个类,则实例化的就是该类的类类型
System.out.println("获取类的名称:"+c.getName());// 获取类的名称
//在Java当中万事万物都对象,所以一个类当中的方法也是对象,任何方法都是method类的实例化对象
Method[] ms=c.getMethods();//获取类类型当中的方法并将之分装为一个实例化的method对象,method方法将获取类类型当中的所有的public类型
// 的方法包括从父类当中继承过来的方法
// c.GetDeclardMethod()方法所获取的是该类自己声明的所有的方法
System.out.println("获取方法的名称:");
for(int i=0;i<ms.length;i++)
{
Class returnType=ms[i].getReturnType();//的到方法的类类型
System.out.print(returnType.getName());//对所的到的类类型的名称进行输出操作
System.out.print(ms[i].getName()+"(");
Class[] paramTypes=ms[i].getParameterTypes();//的到方法所接收到的参数的类类型
for(int j=0;j<paramTypes.length;j++)
{//对存放方法参数类类型的数组进行遍历输出
System.out.print(paramTypes[j].getName()+",");
}
System.out.println(");");
}
}
}
package 反射机制;
public class ClassDemo03 {
public static void main(String[] args) {
String str="HelloWorld";
ClassUtil.printClassMessage(str);//调用ClassUtil类当中的静态方法来对所接收的类当中的数据信息进行输出操作
System.out.println("获取Integer类当中的方法:");
ClassUtil.printClassMessage(Integer.class);//用于获取integer类当中的方法
}
}
程序运行结果:
如图所示程序将接收到的String对象和Integer对象当中的所有的public方法进行输出操作