【javaWeb第二天】-反射

反射在设计框架中使用,解决读取配置文件中,无法直接new类名的问题,如给定 java.util.String 类,如读取时只能读取这段字符的String型,无法用new加载(new "java.util.String"语法错误)。反射效率会低于直接实例化



反射类的构造函数

Class clas = Class.forName("cn.xx.xx.xx");加载到内存
Constructor c = clas.getConstructor(String.class);       Constructor c = new .getConstructor(String.class,int.class) 加载构造函数。
(ex: person(String name)   person(String name, int age)  )
Person p = (Person) c.getInstance("xxxx",12);实例化

clas.getDeclaredConstructor(String.class) 加载私有构造函数
c.setAccessible(true);   暴力反射, 读取所有权限





反射类的方法 

Method method = clas.getMethod("xx",null);加载反射方法
method.invoke(obj,null); 传执行这个方法的对象

getDeclaredMethod("xx",null);加载私有方法
method.setAccessible(true);暴力反射




反射main方法

Method method = clas.getMethod(",main",String[].class);反射main方法
method.invoke(null,(Object)new String[]{"aa","bb"});//要强转Object,因为在数组反射处理上sun有些小问题。



反射字段

//;Person p = new Person;
// String name  =="aaa"
Field f = clas.getField("name");
String name = (String)f.get(p);

// 通过反射字段还可知道类型
Class type = f.getType(); //     type = String

f.set(p,"xxxxx");//设置字段的值


私有字段同上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值