社区
Java SE
帖子详情
有没有办法遍历一个类中的所有数据成员?
junglesong
2005-04-20 01:27:09
这些类基本都是String类型成员变量+getter,setter函数的形式,有没有什么办法依次取得其中的每个成员变量呢?
...全文
183
10
打赏
收藏
有没有办法遍历一个类中的所有数据成员?
这些类基本都是String类型成员变量+getter,setter函数的形式,有没有什么办法依次取得其中的每个成员变量呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
junglesong
2005-04-20
打赏
举报
回复
输出结果如下:
,AFG,,,アフガニスタン,,,,0,,,,,
,AGO,,,アンゴラ,,,,0,,,,,
,ALB,,,アルバニア,,,,0,,,,,
,ANT,,,オランダリョウアンチル,,,,0,,,,,
,ARG,,,アルゼンチン,,,,0,,,,,
,ARM,,,アルメニア,,,,0,,,,,
,AUS,,,オ-ストラリア,,,,0,,,,,
,AUT,,,オ-ストリア,,,,0,,,,,
,AZE,,,アゼルバイジャン,,,,0,,,,,
,BEL,,,ベルギ-,,,,0,,,,,
,BGD,,,バングラデイシユ,,,,0,,,,,
junglesong
2005-04-20
打赏
举报
回复
重整一下再贴。
public static void MakeDateFile(String strFilename,String strClassName,Object[] objArr){
// Get Class
Class cls=null;
try {
cls = Class.forName(strClassName);
} catch (ClassNotFoundException e) {
}
// Trancate the Array
try{
Object obj,obj2;
obj=cls.newInstance();
int i,j;
Field[] fields = cls.getDeclaredFields();
// Print Fields
for(i=0;i<fields.length;i++){
System.out.print(fields[i].getName().toString()+",");
}
System.out.println();
// Print Varaiables
for(i=0;i<objArr.length;i++){
obj=objArr[i];
for(j=0;j<fields.length;j++){
Method method=cls.getMethod(getGetFunctionName(fields[j].getName().toString()),new Class [] { } );
obj2=method.invoke(obj,null);
System.out.print(obj2.toString()+",");
}
System.out.println();
}
}
catch(Exception e){
e.printStackTrace();
}
}
public static String getGetFunctionName(String strVariablename){
String strHead=strVariablename.substring(0,1);
String strTail=strVariablename.substring(1,strVariablename.length());
String strRetval="get"+strHead.toUpperCase()+strTail;
return strRetval;
}
junglesong
2005-04-20
打赏
举报
回复
用这个两个函数搞定了。
public static void MakeDateFile(String strFilename,String strClassName,Object[] objArr){
if(CommonUtil.isValidString(strFilename)==false){
CommonUtil.showErrorDialog("File name is invalid!");
return;
}
// Get Class
Class cls=null;
try {
cls = Class.forName(strClassName);
} catch (ClassNotFoundException e) {
}
// Trancate the Array
try{
Object obj,obj2;
obj=cls.newInstance();
Field[] fields = cls.getDeclaredFields();
for(int i=0;i<objArr.length;i++){
obj=objArr[i];
for(int j=0;j<fields.length;j++){
Method method=cls.getMethod(getGetFunctionName(fields[j].getName().toString()),new Class [] { } );
obj2=method.invoke(obj,null);
System.out.print(obj2.toString()+",");
}
System.out.println();
}
}
catch(Exception e){
e.printStackTrace();
}
}
public static String getGetFunctionName(String strVariablename){
String strHead=strVariablename.substring(0,1);
String strTail=strVariablename.substring(1,strVariablename.length());
String strRetval="get"+strHead.toUpperCase()+strTail;
return strRetval;
}
zcjl
2005-04-20
打赏
举报
回复
可以使用commons-beanutils.jar里面的org.apache.commons.beanutils.PropertyUtils
使用示例代码如下:
PropertyDescriptor[] descr = PropertyUtils.getPropertyDescriptors(bean);
Map props = new HashMap();
for (int i = 0; i < descr.length; i++) {
PropertyDescriptor d = descr[i];
if (d.getReadMethod() == null)
continue;
try {
props.put(d.getName(), PropertyUtils.getProperty(bean, d.getName()));
} catch (Exception e) {
}
}
junglesong
2005-04-20
打赏
举报
回复
大家提供一个针对具体实例的办法吧。
junglesong
2005-04-20
打赏
举报
回复
这些都是对类的操作阿,如何对应到类的实例中呢?
itjourney
2005-04-20
打赏
举报
回复
Class cls = Class.forName("xxx");
Field[] fields=cls.getFields();
MARS.nEIL
2005-04-20
打赏
举报
回复
通过Class的方法getDeclaredMethods,getDeclaredFields可以得到类中的方法和成员变量
jFresH_MaN
2005-04-20
打赏
举报
回复
Field [] f=Class.forName("xxx.yyy").getDeclaredMethods()
jFresH_MaN
2005-04-20
打赏
举报
回复
Field [] f=Class.forName("xxx.yyy").getDeclaredFields();
C++实现
遍历
目录
所谓
遍历
目录,就是给定
一个
目录,访问其中的所有文件(包括子目录下的文件)。迭代是比较常用的
遍历
算法。本文利用C++面向对象的特性,通过
一个
类CBrowseDir,对目录
遍历
进行了封装。用户只需掌握该类四个
成员
函数的用法,就可以在自己的程序中,很方便地实现目录
遍历
。 类CBrowseDir使用了迭代算法。因为算法不是本文重点,笔者不打算展开进一步讨论,对其感兴趣者可参考相关资料。 一
c语言结构体元素
遍历
方法,
有没有
办法
在C中循环使用不同类型元素的结构体?...
我不知道你想要实现什么,但是您可以使用X-Macros并让预处理器对结构的所有字段进行迭代://--- first describe the structure, the fields, their types and how to print them#define X_FIELDS \X(int, field1, "%d") \X(int, field2, "%d") \X(char, fie...
JavaScript中常见基础
遍历
问题
什么是
遍历
遍历
: 通俗来说就是把数组中的每个元素从头到尾都访问一次,并对每一元素或满足条件的某些元素进行操作(类似我们每天早上学生的点名,同时让谁谁谁去干些什么事情)。 今天我们来说一下基础的
遍历
问题 一般我们在js的基础学习中常会碰到到下面几种类型的
数据
数组/字符串/对象 第一种利用for循环 最简单也是最清晰、也是代码量最大的,就是通过 for 循环索引
遍历
数组中的每一项 var arr ...
二叉树 - (前序,中序,后序,层序
遍历
实现)
什么是二叉树? 前序
遍历
?中序
遍历
?后序
遍历
?层序
遍历
? 二叉树的基本操作
lua中的4 种常用
遍历
当我在工作中使用lua进行开发时,发现在lua中有4种方式
遍历
一个
table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX
Java SE
62,628
社区成员
307,261
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章