java中的反射机制(重要)

                                             java中反射

一、反射的含义及作用

1.JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

2.对于任意一个对象,都能够调用它的任意方法和属性;

3.这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制

二、如何得到反射(以包名为test中的Student类为示例)

package test;

public class Student {
	public Student(){
		
	}
	public Student(int num,String name){
		
	}
	private int num;
	
	public String name;
	
	protected String address;
}

1.获得类的对象,用对象.getclass();

      Student st=new Student();

      st.getclass();

2.类名.class;

       Student.class;

3.Class.forName("包名、类名");

      Class.forName("test、Student");

三、具体反射类中的构造器,属性、方法

                                                                         获取类中的构造器即public Student(){}

    //测试类中的代码
        Class c=Student.class;
		//getConstructors只能获得公共构造器//getDeclaredConstructors获得所有构造器
        //constructor是获取构造器时所用
		Constructor[] cs= c.getConstructors;
		for (Constructor constructor : cs) {
		Student st=(Student)constructor.newInstance();
		System.out.println(st);
}

		

                                                                           获取类中的属性(num,name,address)

public class Test{
    
       public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        //获得反射,获取属性的关键代码

        Class c=Student.class;
		Field[] fs=	c.getDeclaredFields();
		for (Field field : fs) {
			System.out.println(field);
		}
       //输出的结果为
       /*   private int com.qm.test.Student.num
        *   public java.lang.String com.qm.test.Student.name
        *   protected java.lang.String com.qm.test.Student.address
        */
}
}

                                                                                  获取类中的方法

public class Test{
    
       public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
     //获取方法的关键代码

        Class c=Student.class;
		Method[] ms=c.getMethods();
		for (Method method : ms) {
			System.out.println(method);
		}

    //此段代码将会输出Student类中继承了Object类的一些方法

}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员xiaoQ

你的鼓励是我无比的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值