当我们通过 (反射的介绍以及动态加载类——反射_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() 获取的是所有该类自己声明的方法,不问访问父类继承的
转载请注明:热爱改变生活.cn » 获取类中方法的信息——反射_2
本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » 获取类中方法的信息——反射_2