/**
* 实例化Class类,及演示常用方法使用
* @author Administrator
*
*/
public class ClassDome {
public static void main(String[] args) {
Class<?> cl = null;
/*
* 使用class方法的静态方法forName()指定路径实例化class对象,抛出异常
*/
try {
cl = Class.forName("java.lang.Integer");
System.out.println("cl: " + cl);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
* 调用Class对象的Constructors方法,返回相应类的公共构造器Constructors数组【公有构造器】
*/
Constructor<?>[] array = cl.getConstructors();
/*
* 调用Class对象的getDeclaredConstructor(),返回相应类的声明的所有的构造器Constructors数组【包括私有的】
*/
Constructor<?>[] arrayConstructor = cl.getDeclaredConstructors();
/*
* 调用Class方法对象的getConstructor(参数.class),返回带参构造器对象
*/
try {
Constructor<?> consturctor = cl.getConstructor(int.class);
} catch (NoSuchMethodException | SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
/*
* 调用Class对象的getFields方法,返回Class对应的类的全部public属性,包括父类继承的
*/
Field[] field = cl.getFields();
/*
* 调用Class对象的getDeclaredFields(),返回Class对象的全部属性值(不包括父类继承的属性)
*
*/
Field[] fields = cl.getDeclaredFields();
/*
* 调用Class对象的getMehtods,返回Class对应的类的public方法(包括继承方法j及接口实现方法)
*/
Method[] methodsPublic = cl.getMethods();
/*
* 调用Class对象的getDeclaerdMethod()方法,返回Class对应类定义的方法(继承方法除外)
*/
Method[] methodsClass = cl.getDeclaredMethods();
/*
* 调用Class对象的getMethod()方法,返回method对象及相应的参数类型 第一个参数:方法的名字,第二个参数是参数的Class对象
*/
try {
Method method = cl.getMethod("toString", int.class);
} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
/*
* 调用Class对象,获取类中是实现的所有的接口的Class的接口
*/
Class<?>[] clas = cl.getInterfaces();
/*
* 调用Class对象,获取类的完整的类路径
*/
String name = cl.getName();
/*
* 调用Class对象的getPackage()方法,返回Package对象,可以使用getName()获取相应的包路径
*/
Package packageName = cl.getPackage();
System.out.println(packageName.getName());
/*
* 调用Class对象的getSimpleName(),返回String类型,相应对象的名
*/
String stringName = cl.getSimpleName();
System.out.println(stringName);
}
}
反射基础之常用方法演示
最新推荐文章于 2024-08-02 23:07:02 发布