Java反射包java.lang.reflect(一)


import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ClassDemo {
	public static void main(String[] args) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException {
		/*
			//获取class对象的3种方式
			//1.类名.class
			Class stuClass1 = Student.class;
			//2.getClass()方法
			Student student = new Student();
			Class stuClass2 = student.getClass();
			//3. Class.forName()方法
			Class stuClass3 = Class.forName("com.zy.day20.Student");
			stuClass1.newInstance();
		*/
		Class stuClass1 = Student.class;
		// getName()获得类的名称,包括包名 com.zy.day20.Student
		System.out.println(stuClass1.getName());
		// getSimpleName()获得类的名称,不包括包名 Student
		System.out.println(stuClass1.getSimpleName());
		// getSuperclass()获得本类的父类的class对象 class com.zy.day20.Person
		System.out.println(stuClass1.getSuperclass());
		// getInterfaces()获得本类所实现的所有接口的class对象 返回 Class数组
		Class[] classes = stuClass1.getInterfaces();

		// getDeclaredFields()可以获取一个类的所有字段,这些成员不包括从父类所继承而来的
		// getFileld方法返回的是数组元素是类内public修饰符所修饰的成员,这些成员包括从父类所继承而来的
		Field[] field1 = stuClass1.getDeclaredFields();
		for (Field field : field1) {
			System.out.println(field.getModifiers() + "\t" + field.getName());
		}

		// 调用getDeclaredMethods方法输出的是自身的public、protected、private方法
		Method[] method1 = stuClass1.getDeclaredMethods();
		for (Method method : method1) {
			System.out.println(method.getModifiers() + "\t"
					+ method.getReturnType() + "\t" + method.getName());
		}
		// 调用getMethods方法输出的是自身的public方法和父类Object的public方法
		Method[] method2 = stuClass1.getMethods();
		for (Method method : method2) {
			System.out.println(method.getModifiers() + "\t"
					+ method.getReturnType() + "\t" + method.getName());
		}
		
		//getDeclaredConstructors()取得所有的构造函数
		Constructor[] constructors = stuClass1.getDeclaredConstructors();
		for (Constructor constructor : constructors) {
			System.out.println(constructor.getModifiers()+"\t"+constructor.getName());
		}
		//取得public的构造函数
		Constructor[] constructors1 = stuClass1.getConstructors();
		for (Constructor constructor : constructors1) {
			System.out.println(constructor.getModifiers()+"\t"+constructor.getName());
		}
	}
}

 

你可能感兴趣的:(Java)