反射基础之常用方法演示

/**
 * 实例化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);

	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章