相关文章推荐
苦闷的杯子  ·  关于日期及时间字段的查询-腾讯云开发者社区-腾讯云·  1 年前    · 
打篮球的口罩  ·  关于asyncio异步io并发编程 - 知乎·  2 年前    · 
千年单身的充电器  ·  vue-router切换路由时同一组件不更新 ...·  2 年前    · 
独立的奔马  ·  reactjs - Modifiers ...·  2 年前    · 
另类的饭盒  ·  英国巴斯大学与南开硕士联合培养项目宣讲通知- ...·  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);
 
推荐文章
苦闷的杯子  ·  关于日期及时间字段的查询-腾讯云开发者社区-腾讯云
1 年前
打篮球的口罩  ·  关于asyncio异步io并发编程 - 知乎
2 年前
千年单身的充电器  ·  vue-router切换路由时同一组件不更新问题 - 热爱前端的17号诶 - 博客园
2 年前
独立的奔马  ·  reactjs - Modifiers cannot appear here.ts(1184) error while using getStaticProps in Nextjs app - Stack Overflow
2 年前
另类的饭盒  ·  英国巴斯大学与南开硕士联合培养项目宣讲通知-人工智能学院
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号