读书人

java Method种试用

发布时间: 2012-12-21 12:03:49 作者: rapoo

java Method类试用

背景:在项目中有一堆javabean,要用在界面上画一堆tableview,要对这一堆tableview进行排序,因此要写一堆sorter类(假如为每个tableview都写一个的话),工作量比较大。
??????? 思考:其实这些sorter类都是差不多的,只是调用的javabean不同,方法名称不同,实现的原理,没有什么不同,那么该如何使用一个sorter类就可对所有的tableview进行排序呢?
??????? 思考结果:也许可以用Class类与Method类,也就是什么reflect机制。
??????? 困难:从来没用过reflect机制。

?????? 没有过,没关系。JDK5.0文档与google是我最好的老师。
?????? 下面就是我的成果了:
?????? 第一步,先建个javabean:
java Method种试用package?test;
java Method种试用
java Method种试用public?class?Model?{
java Method种试用
java Method种试用????private?String?id;
java Method种试用????private?String?name;
java Method种试用????private?String?description;
java Method种试用????
java Method种试用????public?Model()?{
java Method种试用????????id?=?"id";
java Method种试用????????name?=?"name";
java Method种试用????????description?=?"description";
java Method种试用????}
java Method种试用
java Method种试用????public?String?getId()?{
java Method种试用????????return?id;
java Method种试用????}
java Method种试用
java Method种试用????public?void?setId(String?id)?{
java Method种试用????????this.id?=?id;
java Method种试用????}
java Method种试用
java Method种试用????public?String?getName()?{
java Method种试用????????return?name;
java Method种试用????}
java Method种试用
java Method种试用????public?void?setName(String?name)?{
java Method种试用????????this.name?=?name;
java Method种试用????}
java Method种试用
java Method种试用????public?String?getDescription()?{
java Method种试用????????return?description;
java Method种试用????}
java Method种试用
java Method种试用????public?void?setDescription(String?description)?{
java Method种试用????????this.description?=?description;
java Method种试用????}
java Method种试用
java Method种试用}
java Method种试用
??????? 第二步:
java Method种试用package?test;
java Method种试用
java Method种试用import?java.lang.reflect.InvocationTargetException;
java Method种试用import?java.lang.reflect.Method;
java Method种试用
java Method种试用public?class?TestMethodReflect?{
java Method种试用
java Method种试用????public?static?final?String?ID?=?"Id";
java Method种试用????public?static?final?String?NAME?=?"Name";
java Method种试用????public?static?final?String?DESCRIPTION?=?"Description";
java Method种试用
java Method种试用????//方法名集合
java Method种试用????public?static?final?String[]?ALL?=?{?ID,?NAME,?DESCRIPTION?};
java Method种试用
java Method种试用????//这是测试数据
java Method种试用????public?static?final?String[]?MODELDATA?=?{?"1",?"Gavin",
java Method种试用????????????"this?is?model's?test?data"?};
java Method种试用
java Method种试用????/**
java Method种试用?????*?@param?args
java Method种试用?????*/
java Method种试用????public?static?void?main(String[]?args)?{
java Method种试用????????try?{
java Method种试用????????????//获得Model类
java Method种试用????????????Class?model?=?Class.forName("test.Model");
java Method种试用????????????//获得Model类的实例
java Method种试用????????????Object?object?=?model.newInstance();
java Method种试用????????????for?(int?i?=?0;?i?<?ALL.length;?i++)?{
java Method种试用????????????????//获得Model类的set方法,参数为String类型
java Method种试用????????????????Method?setMethod?=?model.getMethod("set"?+?ALL[i],?String.class);
java Method种试用????????????????//调用set方法
java Method种试用????????????????setMethod.invoke(object,?MODELDATA[i]);
java Method种试用
java Method种试用????????????????//获得Model类的get方法,无参数
java Method种试用????????????????Method?getMethod?=?model.getMethod("get"?+?ALL[i],?null);
java Method种试用????????????????//调用get方法,并输出数据
java Method种试用????????????????System.out.println(getMethod.invoke(object,?null));
java Method种试用????????????}
java Method种试用????????}?catch?(ClassNotFoundException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(SecurityException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(NoSuchMethodException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(IllegalArgumentException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(IllegalAccessException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(InvocationTargetException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}?catch?(InstantiationException?e)?{
java Method种试用????????????//?TODO?Auto-generated?catch?block
java Method种试用????????????e.printStackTrace();
java Method种试用????????}
java Method种试用
java Method种试用????}
java Method种试用
java Method种试用}
java Method种试用
??????? ok,大功告成!
??????? 成功后的思考:我只要在一个sorter类里添加一个classname的参数,添加一个methodName的参数(类型为String[]),用一个for循环就有可能用一个sorter类为每个tableview加入排序的功能。

读书人网 >J2ME开发

热点推荐