关于java'反射机制,获得类的所有方法与字段
来源:互联网 发布:小学生编程比赛 编辑:程序博客网 时间:2024/06/05 10:36
在java的反射机制中,今天在看视频讲解如何获取一个类的所有方法和字段,看完觉得一头雾水,就半懂半不懂的去做实验。可老出错误,感觉没什么错啊。
测试类FieldTest.java
import java.lang.reflect.Field;
public class FieldTest {
public static void main(String[] args) throws Exception {
Helper helper=new Helper();
changeStringValue(helper);
System.out.println(helper);
}
public static void changeStringValue(Object obj) throws Exception{
// TODO Auto-generated method stub
Field[] fields =obj.getClass().getFields();
for(Field field:fields){
if(field.getType()==String.class){
String str1=(String)field.get(obj);
String str2=str1.replace('f', 'c');
field.set(obj, str2);
}
}
}
}
辅助类 Helper.java
public class Helper {
String test1="onebyone";
String test2="twobytwo";
String test3="threeorthree";
@Override
public String toString() {
return "Helper [test1=" + test1 + ", test2=" + test2 + ", test3="
+ test3 + "]";
}
}
结果:
Helper [test1=onebyone, test2=twobytwo, test3=threeorthree]
结果在编译执行都没问题,可并没有改变辅助类里面String的值,我很郁闷怎么回事,我就debug一下,发现fields.length的值是0,我不是已经查询所有的字段了吗,怎么还回0呢?没有思路了,后来一想发现,你要想访问辅助类里面的字段时,他们的类型一定是public类型的,否则辅助类的字段是不可见的。所以把辅助类里面的String前面加上public局可以了
结果:
Helper [test1=znebyzne, test2=twzbytwz, test3=threezrthree]
其实还有一种解决方法就在获取时强制获取,用方法.getDeclaredFields()进行强制访问,然而这才是你能访问,要想使用一定要设置Field对象可用,方法setAccessible(true);
- 关于java'反射机制,获得类的所有方法与字段
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- Java反射机制(得到类的所有方法)
- Java反射机制之获得其他类中的所有属性
- java基础之通过反射获得和使用类的字段、方法、构造器,等
- Java反射机制之获得构造函数的方法
- 反射:获得String的所有构造方法
- java反射获得类的字段和值
- Java反射机制(得到所有的构造方法)
- 使用反射获取一个类的所有方法和字段
- Java反射代码--02.得到某类的所有字段
- Java反射机制:从对象获取类的所有方法信息
- 利用JAVA中的反射机制获得某个类的信息
- java 反射机制 之 getMethods获取所有公有方法 和 getDeclaredMethods 获取本类所有方法
- java的反射机制--关于类中属性的反射。
- 关于Java的反射机制
- 关于Java的反射机制
- Windows API 之一:GetUserName和GetComputerName
- HDU 5023 线段树+状压
- ios7 获取TextView中图片信息。
- linux下安装shadowsocks
- iOS开发 iOS8 适配
- 关于java'反射机制,获得类的所有方法与字段
- linux cd 命令
- Windows下安装Redis和MongoDB
- FTP命令详解
- LevelDB源码剖析之TableCache
- ORACLE高水位线
- android开发环境搭建
- 面试感悟
- php mssql 存储过程