获取类中方法的信息——反射_2

无简介

当我们通过(反射的介绍以及动态加载类——反射_1)中的三个方法获得某一个类的类类型的之后,我们就可以通过这个来获得这个类的名称

public static void getClassInfo(Object obj) {
//获得传入类的类类型
Class cls = obj.getClass();
System.out.println(“当前类的全称为:” + cls.getName());
System.out.println(“当前类的名称为:” + cls.getSimpleName());
/*
* Method类,方法对象 一个成员方法就是一个Method对象
* getMethods()方法获取的是所有的public的函数,包括父类继承而来的
* getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问父类继承的
*/
// Method[] med = cls.getMethods();
Method[] med = cls.getDeclaredMethods();
for (Method method : med) {
//得到方法的返回值类类型
Class types2 = method.getReturnType();
System.out.print(“方法返回类型:” + types2.getName() + " “);
//获得方法的名称
System.out.print(method.getName() + “(”);
//获得参数的类型—>获得的是参数列表的类型的类类型
Class[] types = method.getParameterTypes();
for (Class class1 : types) {
System.out.print(class1.getName() + “,”);
}
System.out.print(”)“);
System.out.println(”");
}
}

为了看到结果,我自定了一个类,当做传入的参数:

public class TestClass {
public void T1(String name) {

}

public void T2(int age,String title,double totle) {

}

public String T3() {
return “”;
}

private void T4() {

}

private void T5(int age) {

}

private String T6() {
return “”;
}
}

下面是在使用getDeclaredMethods方法的时候的运行结果

当前类的全称为:cn.sumile.TestClass
当前类的名称为:TestClass
方法返回类型:void T1(java.lang.String,)
方法返回类型:void T2(int,java.lang.String,double,)
方法返回类型:java.lang.String T3()
方法返回类型:void T4()
方法返回类型:void T5(int,)
方法返回类型:java.lang.String T6()

下面是在使用getMethods方法的时候的运行结果

当前类的全称为:cn.sumile.TestClass
当前类的名称为:TestClass
方法返回类型:void T1(java.lang.String,)
方法返回类型:void T2(int,java.lang.String,double,)
方法返回类型:java.lang.String T3()
方法返回类型:void wait(long,int,)
方法返回类型:void wait(long,)
方法返回类型:void wait()
方法返回类型:boolean equals(java.lang.Object,)
方法返回类型:java.lang.String toString()
方法返回类型:int hashCode()
方法返回类型:java.lang.Class getClass()
方法返回类型:void notify()
方法返回类型:void notifyAll()

从以上两个结果中我们可以看到第一段代码注释中这两句的意思了:

getMethods()方法获取的是所有的public的函数,包括父类继承而来的 
getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问父类继承的

[dl href=‘http://pan.baidu.com/s/1jG1UpQQ’]测试代码[/dl]

-------------本文结束  感谢您的阅读-------------
下次一定