中易网

如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法

答案:3  悬赏:80  
解决时间 2021-01-15 15:34
如何利用java反射顺序的从一个java类中得到其中定义的成员变量名或者方法
最佳答案
我不太明白你问题的意思
不知道为什么你理解的那么复杂,对于java的反射是可以直接获取字段Field的,而每一个Field都有其get set方法就相当于getXXX和setXXX了
我不知道你这个ArrayList里面装的是什么,写个小例子,我理解你需要处理的大概也就是这样吧
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
 
public class A {
 private String field1;
 private String field2;
 public String getField1() {
  return field1;
 }
 public void setField1(String field1) {
  this.field1 = field1;
 }
 public String getField2() {
  return field2;
 }
 public void setField2(String field2) {
  this.field2 = field2;
 }
 public static void main(String[] args) {
  A a = new A();
  a.field1 = "1";
  a.field2 = "2";
  for(Field field:A.class.getDeclaredFields()){
   try {
    System.out.println(field.get(a));
   } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
} 另外List只是一个集合,也就是某种意义上来说是无序的,他的顺序是以装载的顺序定义的,你如何保证List中的数据顺序与类的属性定义顺序是一样的??这种用HashMap是不是要好点??
追问List<>中存放每条数据库记录,比如对应DB中student表中的一条记录,对应java的是每一个student类的对象,要按照student类中属性的顺序写入到Excel中。你给的程序是可以的,但不知道是否能保证for循环field数组中方法顺序和类中声明的顺序一致么?getDeclaredFields方法在API中有说明:返回数组中的元素没有排序,也没有任何特定的顺序。追答其实List也是有顺序的,他是按照队列方式加入数据的,那么你只要保证Excel中的单元格定义与Student的属性定义是一致的就行了。
比如Student的属性定义为id,name,sex,age那么取出的Field的顺序也是id,name,sex,age,这个并不冲突
全部回答
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];

String fieldName = field.getName();
System.out.println("name====="+fieldName);
String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1);

// 获得和属性对应的getXXX()方法
Method getMethod = classType.getMethod(getMethodName, new Class[]{});

// 调用原对象的getXXX()方法
Object value = getMethod.invoke(object, new Object[]{});
System.out.println("value===="+value);
}追问http://bbs.csdn.net/topics/390251554 文章中间提到 “我用几乎相似的方法,但获取到的成员变量的顺序却与类声明时候的顺序不一样”,这个怎么解决?追答你要么维护一个属性,这个属性里边按顺序放入get方法名,反射时直接获取方法名
下一个单元格要写入的是类中的什么字段(getXxx()方法),也就说要保证提取到
的get方法或成员变
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中石化郝家庄乡加油站地址在什么地方,我要处
使用360解除占用、360强力删除是什么意思?
中国哪些皇帝娶过洋媳妇?
AA级食品和A级食品有何区别?
王娜超市地址好找么,我有些事要过去
一件工作甲独做15天,乙独做10天完成,两队合作
怎样反驳工匠精神,精益求精是对专才的诠释
有没有觉得男友把你当作小宠物而不是真的爱你
男18龙和女20虎相配吗
日常的哪些习惯让你终生受用?
别克凯越中控台盖板开胶怎么处理
露脚踝的裤子,怎么配袜子?
东方连德家具城地址好找么,我有些事要过去
枫源佰林家居生活馆(友谊店)地址有知道的么?
宏运旅行社地址在什么地方,我要处理点事
推荐资讯
重组家庭的孩子可以结婚吗
雨燕16款1.5手动时尚和酷玩版选哪个
南京日韩道学日语要多少钱?
听字开头的成语有哪些
dnf剧情疑问。比尔马克帝国试验场研究的是什
DES加密,第一步的置换怎么做?
括号-5ab^2乘括号负a^2等于几
学习钢琴是先练习哈农还是拜厄?还是两本一起
同恩教育(重庆合川区)地址在什么地方,我要处
黄冈那有放高利贷的,谁有电话
萌新疑惑:部落捐卡怎么捐
《三傻大闹宝莱坞》英语观后感(中英对照)
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?