背景:在项目中有一堆javabean,要用在界面上画一堆tableview,要对这一堆tableview进行排序,因此要写一堆sorter类(假如为每个tableview都写一个的话),工作量比较大。
??????? 思考:其实这些sorter类都是差不多的,只是调用的javabean不同,方法名称不同,实现的原理,没有什么不同,那么该如何使用一个sorter类就可对所有的tableview进行排序呢?
??????? 思考结果:也许可以用Class类与Method类,也就是什么reflect机制。
??????? 困难:从来没用过reflect机制。
?????? 没有过,没关系。JDK5.0文档与google是我最好的老师。
?????? 下面就是我的成果了:
?????? 第一步,先建个javabean:
public?class?Model?{
????private?String?id;
????private?String?name;
????private?String?description;
????
????public?Model()?{
????????id?=?"id";
????????name?=?"name";
????????description?=?"description";
????}
????public?String?getId()?{
????????return?id;
????}
????public?void?setId(String?id)?{
????????this.id?=?id;
????}
????public?String?getName()?{
????????return?name;
????}
????public?void?setName(String?name)?{
????????this.name?=?name;
????}
????public?String?getDescription()?{
????????return?description;
????}
????public?void?setDescription(String?description)?{
????????this.description?=?description;
????}
}
??????? 第二步:
import?java.lang.reflect.InvocationTargetException;
import?java.lang.reflect.Method;
public?class?TestMethodReflect?{
????public?static?final?String?ID?=?"Id";
????public?static?final?String?NAME?=?"Name";
????public?static?final?String?DESCRIPTION?=?"Description";
????//方法名集合
????public?static?final?String[]?ALL?=?{?ID,?NAME,?DESCRIPTION?};
????//这是测试数据
????public?static?final?String[]?MODELDATA?=?{?"1",?"Gavin",
????????????"this?is?model's?test?data"?};
????/**
?????*?@param?args
?????*/
????public?static?void?main(String[]?args)?{
????????try?{
????????????//获得Model类
????????????Class?model?=?Class.forName("test.Model");
????????????//获得Model类的实例
????????????Object?object?=?model.newInstance();
????????????for?(int?i?=?0;?i?<?ALL.length;?i++)?{
????????????????//获得Model类的set方法,参数为String类型
????????????????Method?setMethod?=?model.getMethod("set"?+?ALL[i],?String.class);
????????????????//调用set方法
????????????????setMethod.invoke(object,?MODELDATA[i]);
????????????????//获得Model类的get方法,无参数
????????????????Method?getMethod?=?model.getMethod("get"?+?ALL[i],?null);
????????????????//调用get方法,并输出数据
????????????????System.out.println(getMethod.invoke(object,?null));
????????????}
????????}?catch?(ClassNotFoundException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(SecurityException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(NoSuchMethodException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalArgumentException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalAccessException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(InvocationTargetException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(InstantiationException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????}
}
??????? ok,大功告成!
??????? 成功后的思考:我只要在一个sorter类里添加一个classname的参数,添加一个methodName的参数(类型为String[]),用一个for循环就有可能用一个sorter类为每个tableview加入排序的功能。
详细解决方案
java Method种试用
热度:10376 发布时间:2013-02-25 21:30:35.0
package?test;
package?test;
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件