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<Student> stuClass1 = Student.class;
			//2.getClass()方法
			Student student = new Student();
			Class<? extends Student> stuClass2 = student.getClass();
			//3. Class.forName()方法
			Class<?> stuClass3 = Class.forName("com.zy.day20.Student");
			stuClass1.newInstance();
		*/
		Class<Student> 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());
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值