zoukankan      html  css  js  c++  java
  • java 利用反射调用静态方法的示例

    内容简介

    主要介绍使用反射的机制来调用执行类中的静态方法。

    静态方法

    public class GisUtil {
    
        private final static Logger logger = LoggerFactory.getLogger(GisUtil.class);
    
        public static ExportMethodResultDto gisService1 (String str){
            logger.info("进入gisService1方法,参数[str]:" + str);
            ExportMethodResultDto dto = new ExportMethodResultDto();
            LocalDateTime currentTime = LocalDateTime.now();
            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            dto.setJobId(df.format(currentTime));
            dto.setOutFilePath("E:\DocDirectory\test.doc");
            return dto;
        }
    
        public static ExportMethodResultDto gisService2 (ExportProjectRasterParam param){
            logger.info("进入gisService2方法...");
            logger.info("参数[param]=" + param);
            ExportMethodResultDto dto = new ExportMethodResultDto();
            String uuId = StrUtil.getUUID();
            dto.setJobId(uuId);
            dto.setOutFilePath("E:\"+ uuId +"\srtm_49_02_raster.shp");
            return dto;
        }
    }

    调用

    String str = "test_service_1";
    Class<?> threadClazz = Class.forName("com.lgt.demo2.gisService.util.GisUtil");
    Method method = threadClazz.getMethod("gisService1", String.class);
    ExportMethodResultDto dto = (ExportMethodResultDto)method.invoke(null, str);
    logger.info("gisService1返回:");
    logger.info("   jobId:"+ dto.getJobId());
    logger.info("   OutFilePath:" + dto.getOutFilePath());
    
    ExportProjectRasterParam param = new ExportProjectRasterParam();
    param.setCellSize("1");
    param.setResamplingType("NEAREST");
    param.setInCoorSystem("GCS_WGS_1984");
    param.setOutCoorSystem("GCS_China_Geodetic_Coordinate_System_2000");
    Method method2 = threadClazz.getMethod("gisService2", ExportProjectRasterParam.class);
    ExportMethodResultDto dto2 = (ExportMethodResultDto)method2.invoke(null,param);
    logger.info("gisService2返回:");
    logger.info("   jobId:"+ dto2.getJobId());
    logger.info("   OutFilePath:" + dto2.getOutFilePath());

    输出结果

    2019-07-03 14:51:08.816  INFO 332 --- [nio-8080-exec-2] com.lgt.demo2.gisService.util.GisUtil    : 进入gisService1方法,参数[str]:test_service_1
    2019-07-03 14:51:08.852  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      : gisService1返回:
    2019-07-03 14:51:08.853  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      :    jobId:2019-07-03 14:51:08
    2019-07-03 14:51:08.853  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      :    OutFilePath:E:DocDirectory	est.doc
    2019-07-03 14:51:08.853  INFO 332 --- [nio-8080-exec-2] com.lgt.demo2.gisService.util.GisUtil    : 进入gisService2方法...
    2019-07-03 14:51:08.854  INFO 332 --- [nio-8080-exec-2] com.lgt.demo2.gisService.util.GisUtil    : 参数[param]=[inCoorSystem:GCS_WGS_1984,outCoorSystem:GCS_China_Geodetic_Coordinate_System_2000,resamplingType:NEAREST,cellSize:1]
    2019-07-03 14:51:08.858  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      : gisService2返回:
    2019-07-03 14:51:08.859  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      :    jobId:79b4e82ef4564855881ecb4030ba39e2
    2019-07-03 14:51:08.859  INFO 332 --- [nio-8080-exec-2] c.l.d.f.controller.StringController      :    OutFilePath:E:79b4e82ef4564855881ecb4030ba39e2srtm_49_02_raster.shp

    用到的实体类

    public class ExportMethodResultDto implements Serializable {
    
        private String outFilePath;//生成文件的绝对路径
        private String jobId;//GIS调用异步服务响应的jobId
    
        public String getOutFilePath() {
            return outFilePath;
        }
    
        public void setOutFilePath(String outFilePath) {
            this.outFilePath = outFilePath;
        }
    
        public String getJobId() {
            return jobId;
        }
    
        public void setJobId(String jobId) {
            this.jobId = jobId;
        }
    }
    ExportMethodResultDto
    public class ExportProjectRasterParam implements Serializable {
        private String inCoorSystem;//输入坐标系
        private String outCoorSystem;//输出坐标系
        private String resamplingType;//重采样算法(可选)
        private String cellSize;//像元大小(可选)
    
        public String getInCoorSystem() {
            return inCoorSystem;
        }
    
        public void setInCoorSystem(String inCoorSystem) {
            this.inCoorSystem = inCoorSystem;
        }
    
        public String getOutCoorSystem() {
            return outCoorSystem;
        }
    
        public void setOutCoorSystem(String outCoorSystem) {
            this.outCoorSystem = outCoorSystem;
        }
    
        public String getResamplingType() {
            return resamplingType;
        }
    
        public void setResamplingType(String resamplingType) {
            this.resamplingType = resamplingType;
        }
    
        public String getCellSize() {
            return cellSize;
        }
    
        public void setCellSize(String cellSize) {
            this.cellSize = cellSize;
        }
    
        public String toString(){
            return String.format("[inCoorSystem:%s,outCoorSystem:%s,resamplingType:%s,cellSize:%s]",this.inCoorSystem,this.outCoorSystem,this.resamplingType,this.cellSize);
        }
    }
    ExportProjectRasterParam
  • 相关阅读:
    linux使用shell执行一个Python文件
    shell编程
    mysql之通过cmd连接远程数据库
    单词辨析
    安全测试
    Linux下使用crontab执行一个shell脚本
    重新梳理Linux系统中Python环境的问题
    selenium 定位元素不稳定怎么解决?
    爬虫数据分析的前景
    Linux下部署python selenium UI自动化测试
  • 原文地址:https://www.cnblogs.com/codecat/p/11114469.html
Copyright © 2011-2022 走看看