6.反射的使用


反射的原理:

反射的实现:

/*反射:
 * 1.创建对象
 * 2.构造无参数方法
 * 3.获取类属性
 * 4.给属性赋值
 * 5.获取类方法
 * 6.执行方法
 */
public class ReflectDemo {

	public static void main(String[] args) {
		/*创建反射对象(三种方法)
		 * 1. class.forname("");
		 * 2. 类名.class属性
		 * 3. 对象.getClass()
		 */
		try {
			//方法1
			Class cls = Class.forName("edu.com.book.fengzhuang.BookType");
		    //方法2 Class cls =BookType.class
		       //方法3 BookType bt = new BookType();
		      // Class cls = bt.getClass();
		      System.out.println(cls.getName());
		     //2.构造无参方法
		    Object obj = cls.newInstance(); 
		    
		   /*
		    * 3.获取类的属性
		    */
		      //根据属性的名称来获取属性对象(Filed)---只能获取public的属性
		     //  Field f1 = cls.getField("btid");
		    //根据属性的名称来获取属性对象(Filed)---可以获取所有权限的属性
		    Field f2 = cls.getDeclaredField("btid");
		    System.out.println(f2.getType().toString());
		    //获取所有的属性
		    Field[] f2s = cls.getDeclaredFields();
		    //4.给属性赋值
		    f2.setAccessible(true);//设置访问权限
		    f2.set(obj, "张三");
		    BookType bt =(BookType)obj;
		    System.out.println(bt.getBtid());
		    //5.获取类中的方法(下面是获取public方法为例)
		   //1获取无参方法
		    Method m1 = cls.getMethod("getBtid");
		  //2.获取有参方法
		    Method m2 = cls.getMethod("setBtid", String.class);
		  //6.执行方法
		    m2.invoke(obj, "1234");
		    Object o = m1.invoke(obj);
		    System.out.println(o);
		    
		    
		}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值