要获取类的信息,首先要获取类的类类型 传递的是哪个子类的对象,获取的就是该子类的类类型 Class c = obj.getClass(); 获取类的名称 c.getName(); 获取方法 Method类时方法对象 一个成员方法就是一个Method对象 getMethods()方法获取的是所有的public的函数,包括父类集成而来的 getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限
getReturnType() 得到方法的返回值类型的类类型
getParameterTypes() 得到参数列表的类型的类类型
double.class 不同于Double.class
double是个类型 Double是类
函数参数列表的类类型.
getParameterTypes
getMethods获取不到 继承而来的 方法.
double.class 和 Double.class 完全不同.
数据类型.class 称为数据类型的类类型 直接输出他的名称为数据类型名称
不包含包名的name getSimpleName
getMethods获取的是所有的Public的函数,包括父类继承而来的
getDeclaredMethod获取的是所有该类自己声明的方法,不论访问权限
getReturnType获取方法的返回值类型的类类型
getParameterTypes获取参数类型 得到的是参数列表的类型的类类型
package lmr; public class ClassUtil{ public static void printClassMessage(Object obj){ Class c = boj.getClass(); System.out.println("类的名称是:"+c.getName()); Method[] ms = c.getMethods(); for(int i=0;i<ms.length;i++){ Class returnType = ms[i].getReturnType(); System.out.println(returnType.getName()+""); System.out.println(ms[i].getName()+"("); Class[] paramTypes = ms[i].getParameterTypes(); for(Class class1:paramTypes){ System.out.println(); } } } }
package lmr; public class ClassDemo2{ public static void main(String[] args){ Class c1 = int.class; Class c2 = String.class; Class c3 = double.class; Class c4 = Double.class; Class c5 = void.class; System.out.println(c1.getName()); System.out.println(c2.getName()); System.out.println(c2.getSimpleName()); System.out.println(c5.getName()); } }
class OfficeBetter {public static void main(String[] args) {try{Class c = Class.forName(args[0]); OfficeAble oa = (OfficeAble)c.newInstance(); oa.start(); } } }
万物皆对象,方法也是对象。
Method类,方法对象
一个成员方法就是一个Method对象。
getMethods()方法获取的是所有的public的函数,包括父类继承而来的。
getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限。
注意:上面两个函数返回的都是Method数组。
Method[] ms = c.getMethods();
获取方法的返回值类型的 类类型
Class returnType = ms[0].getRturnType(); //然后调用returnType .getName();才是返回值类型
获取方法的名称
ms[0].getName();
获取参数类型,得到的是参数李彪的类型的类类型
Class[] paramTypes = ms[i].getParameterTypes();//然后调用paramTypes[i] .getName();才是参数类型
代码通过传递一个对象,获取该类的类名。
通过先getClass( )获取类类型,然后getName( )打印类名
获取基本数据类型的类类型
Class c = String.class
通过c.getName() //返回java.lang.String
或 getSimpleName() //返回String
注意getSimpleName()不包含包名的类的名称。
基本的数据类型
void关键字 都存在类类型。
返回值类型的类类型
返回值类型
11111
8888888888
7777777777777777
666666666666
55555555555555
4444444444
333333333333
2222222222222
1111111111111111
getMethods() 所有public的方法,包括父类继承来的
接口是一个标准,类继承这个标准就可以方便实现动态加载,增加代码的健壮性和灵活性
2222222
111111
。。。。。。。