java Method类试用

本文介绍如何利用Java反射机制创建通用的排序器,通过实例演示如何动态调用JavaBean的get和set方法,从而实现对不同TableView的数据排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

       没有过,没关系。JDK5.0文档与google是我最好的老师。
       下面就是我的成果了:
       第一步,先建个javabean:

package test;

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;
    }


}


        第二步:
package test;

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加入排序的功能。
内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值