java 反射 动态调用不同类的静态方法(推荐)

恩 ,下面这个小demo还是不错的,大家可以借鉴一下

1、准备用反射的方式调用的类

package ss;
 
public class Use {
  public static Integer  demo( String s ){
    System.err.println(s+"<<<<<<成功!");
    Integer ss=1;
    return ss;
  }
}

2、调用

public class Ceshi {
  public static void main(String[] args) {
     
     try {
        String className = "ss.Use";//这里注意了,是:包名.类名,只写类名会出问题的哦
        Class<?> testClass = Class.forName(className);
        Method saddMethod2 = testClass.getMethod("demo", new Class[]{String.class});
        
          String result=saddMethod2.invoke(null,new Object[]{"测试反射"}).toString();
          //虽然invoke(),方法里的参数是变参,但是,第一个的null还是需要的,原因大家可以看下源码
          System.out.println(result);
      } catch (Exception e) {
        e.printStackTrace();
      }

只是demo,大家可以根据自己的实际情况做更改。
例如下面我的代码—实现定时爬取多个网站的招标信息,就利用到了类的反射调用静态方法:

long time = System.currentTimeMillis();
TimerTask task = new TimerTask() {
            @Override
            public void run() {
                List<BiddingCompany> biddingCompanyList;
                try {
                    biddingCompanyList = BiddingService.biddingCompanyDAO.listAllAll();
                    for (BiddingCompany company : biddingCompanyList) {
                        Class<?> aClass = Class.forName(company.getMirror());
                        Method spider = aClass.getMethod("spider", BiddingCompany.class);
                        spider.invoke(null, company);
                        log.info("时间=" + new Date() + "执行了" + company.getCompanyName() + "招标信息爬取任务");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                log.info("共用时间:" + (System.currentTimeMillis() - time) / 1000 + "秒");
            }
        };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值