当前位置: 代码迷 >> Android >> java中怎么把反射得到的属性 转换 成指定类型 进行操作
  详细解决方案

java中怎么把反射得到的属性 转换 成指定类型 进行操作

热度:344   发布时间:2016-04-28 01:02:47.0
java中如何把反射得到的属性 转换 成指定类型 进行操作?
如下面的代码,我查询到所有属性,并判断属性的类型是Button,然后向给他们绑定一下事件,但是报错了.说Field 没办法 转换成Button,请问是我的写法有问题,还是确实不能这样操作呢?

Field[] fields=this.getClass().getDeclaredFields();
for(int i=0;i<fields.length;i++){
     if(fields[i].getType().toString()=="Button"){
          ((Button)fields[i]).setOnClickListener(this);
      }
 }

------解决思路----------------------
本帖最后由 birdsaction 于 2015-05-11 13:48:47 编辑
 ((Button)fields[i]).setOnClickListener(this); 这个不能强转。
fields[i] 是Field类型, 你是想通过反射 一次性注册Click事件对吧.

((Button)fields[i].get(MyActivity.this)).setOnClickListener(this); 你这样试试


------解决思路----------------------
判断应该这样: if(fields[i].getType()==Button.class),toString后应该是“class 包名.类名.xxx”,这个记不太清了。
field[i]本身就是field类型,怎么可能转成Button呢?不能这样写的。