内容简介

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

静态方法

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\test.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:\79b4e82ef4564855881ecb4030ba39e2\srtm_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

java 利用反射调用静态方法的示例的更多相关文章

  1. java利用反射调用类的某个方法

    java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...

  2. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  3. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  4. 利用反射--调用一个按钮的Click事件

    最基本的调用方法 (1)button1.PerformClick();(2)button1_Click(null,null);(3)button_Click(null,new EventArgs()) ...

  5. java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值

    1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...

  6. C#利用反射调用PB编译的COM组件

    问题: 1.根据COM组件的ProgID,得到COM组件公开的类型 2.创建COM组件提供的类型的对象 3.调用执行方法 正确姿势 C#利用反射调用(后期绑定)PB编译的COM组件 C#调用COM组件 ...

  7. Java中如何调用静态方法

    Java中如何调用静态方法: 1.如果想要调用的静态方法在本类中,可直接使用方法名调用 2.调用其他类的静态方法,可使用类名.方法名调用 关于静态方法能被什么调用 1.实例方法 2.静态发放

  8. 【Java】反射调用与面向对象结合使用产生的惊艳

    缘起 我在看Spring的源码时,发现了一个隐藏的问题,就是父类方法(Method)在子类实例上的反射(Reflect)调用. 初次看到,感觉有些奇特,因为父类方法可能是抽象的或私有的,但我没有去怀疑 ...

  9. java 利用jna调用c#的dll

    一.需求阐述: 如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需 ...

随机推荐

  1. 【vim小记】vim的高效移动

    我还是推荐所有刚入门vim的朋友先去用vimtutor练习,然后去看vim的帮助文档,写的十分仔细,而且可以马上实战,见效很快,以下的很多示意图都是vim帮助文档里的例子,我觉得很好,就拿出来了. v ...

  2. 08 Tomcat+Java Web项目的创建和War的生成

    1.web服务器软件:服务器:安装了服务器软件的计算机服务器软件:接收用户的请求,处理请求,做出响应 * web服务器软件:接收用户的请求,处理请求,做出响应. 在web服务器软件中,可以部署web项 ...

  3. MySql 、Oracle 获取表结构和字段信息

    1.MySql获取表结构信息 SELECT TABLE_NAME, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA ...

  4. 模型层之ORM、数据库和单表操作

    一.ORM简介 ORM是“对象-关系-映射”的简称,一般指持久化数据和实体对象的映射 1.1 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中( ...

  5. 【题解】Luogu P4838 P哥破解密码

    原题传送门 考虑一个一个将字母加入字符串后面 设\(f[i][0/1/2]\)表示长度为\(i\)字符串末尾有\(0/1/2\)个A的种类数 易知: \(f[1][0]=1,f[1][1]=1,f[1 ...

  6. CCF 2016-04-1 折点计数

    CCF 2016-04-1 折点计数 题目 问题描述 给定n个整数表示一个商店连续n天的销售量.如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增 ...

  7. StatusStrip控件的使用(转:http://blog.sina.com.cn/s/blog_4f18c3ec0100fguf.html)

    c# winForm 将窗体状态栏StatusStrip 分成左中右三部分 右边显示当前时间 实现效果: 通过StatusStrip显示窗体状态栏 同时将状态栏分成三部分 居左边显示相关文字信息 中间 ...

  8. Swift枚举的全用法

    鉴于昨天开会部门会议讨论的时候,发现有些朋友对枚举的用法还是存在一些疑问,所以就写下这个文章,介绍下Swift下的枚举的用法. 基本的枚举类型 来,二话不说,我们先贴一个最基本的枚举: enum Mo ...

  9. c# 使用泛型集合List<T>

  10. mysql学习之基础篇05

    mysql中的统计函数: 1. 查询商品价格中最高的价格: select max(shop_price) from goods; 2. 查询商品价格中最低的价格: select min(shop_pr ...