JAVA中的反射()
java中取得类对象的方法有三种
1.getClass();但是缺点就是如果没有类,就会出错,然后编译不过
2.class.forname("包+类");//如果没有类,此方法也不会报错,但在运行时会出错
3.包+类.class
利用反射实例化
Class<?> cls = Class.forName("类+包");
Object obj = cls.newInstance();
取得类所在的包:
getPackage();//返回-- 类型 包名
getPackage().getName();//返回包名
取得类名:
class.getName(); //返回包名称+类名称 class.getSimpleName();//返回类名称
取得父类:
class.getSuperClass.getSimpleName();
取得类接口:
Class<?> cls [] = cls.getInterfaces(); for(...){ cls[i].getSimpleName(); }
取得构造方法:
java.lang.reflect包下: getConstructors();//返回所有构造 getConstructor(param);//返回指定构造
constructors.getModifiers();//获取方法修饰符
constructors.getName();//获取构造方法名称
constructors.getParameterCount();//获取构造方法参数个数
constructors.getParameterTypes();//获取构造方法的参数类型
constructors.getExceptionTypes();//获取构造方法的异常类型
取得方法:
getMethods();//获取类中所有方法 getMethod(name,Class<?>);//获取指定方法 两者都返回java.lang.reflect.Method; getName();//返回方法名称 getModifiers();//返回方法修饰符 getParameterTypes();//返回参数类型 invoke(object,object...);//调用指定方法,调用时要有实例化对象,然后再设置参数;
getReturnType();//返回值类型
getDeclaredMethods();//获取本类中的方法
...