相关文章推荐
稳重的人字拖  ·  矩形窗口裁剪(以裁剪直线和复杂多边形为例) ...·  1 年前    · 
谦虚好学的石榴  ·  【图像去噪】基于butterworth滤波器 ...·  1 年前    · 
憨厚的墨镜  ·  运算符重载(1)_returning ...·  1 年前    · 
成熟的扁豆  ·  [Ops]阿里云服务器上无法发送邮件的现象原 ...·  2 年前    · 
Code  ›  java - 有个api方法接受泛型对象参数,如何通过反射调用该方法? -
object api test 泛型
https://segmentfault.com/q/1010000011015262
仗义的竹笋
2 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. java
  4. 问答详情

有个api方法接受泛型对象参数,如何通过反射调用该方法?

头像
arms01
721 2 44 86
发布于
2017-09-05

api类似

public <T> void do(T o){...}

有个pojo对象 MyAction a 作为参数通过反射传给API执行。
但是无法获取到这个do方法,
获取方法的代码如下

class<?>[] types = {MyAction.class};
Method m = cls.getMethod("do", types);//这里报错,获取不到该方法

应该怎么写才能通过反射获取到该do方法?

java
阅读 6.8k
2 个回答
得票 最新
头像
mizhoux
3k 4 20 42
发布于
2017-09-05
✓ 已被采纳

因为泛型擦除的缘故,编译之后该方法就成了:

public void do (Object o) {...}

所以获取的时候直接参数类型是使用 Object.class:

import java.lang.reflect.Method;
public class Test<T> {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Test.class;
        Method method = clazz.getMethod("test", Object.class); // 参数类型为 Object.class
        Test test = new Test();
        String param = "Hello world";
        method.invoke(test, param);
 
推荐文章
稳重的人字拖  ·  矩形窗口裁剪(以裁剪直线和复杂多边形为例) - yogurtWX - 博客园
1 年前
谦虚好学的石榴  ·  【图像去噪】基于butterworth滤波器、中值、维纳、小波算法实现图像去噪含GUI-阿里云开发者社区
1 年前
憨厚的墨镜  ·  运算符重载(1)_returning reference to temporary [-wreturn-local-a-CSDN博客
1 年前
成熟的扁豆  ·  [Ops]阿里云服务器上无法发送邮件的现象原因及解决_51CTO博客_阿里云邮箱发送失败
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号