gpt4 book ai didi

java - 获取继承泛型方法的返回类型

转载 作者:行者123 更新时间:2023-11-30 01:44:53 26 4
gpt4 key购买 nike

我有这3个类(class)

public class Box<O> {

public O getItem() {...}

}
public class CoolBox extends Box<Integer> { ... }
public class AmazingBox extends CoolBox { ... }

在我的代码中的某一时刻,我需要获取 AmazingBox 类的方法 getItem() 的返回类型,但是当通过反射访问其方法时,我得到 Object 作为返回类型,而不是 Integer

有什么方法(普通java或额外的库)来获取Integer作为返回类型?

这是我用来获取返回类型的代码:

Class<?> c = AmazingBox.class;  // This is not how i get the class but its for demonstration purposes

Method m = c.getMethod("getItem");

Type t = m.getReturnType();

最佳答案

我刚刚发现有一个名为 GenericsResolver 的库这正是我想要的。

使用这段代码它会返回正确的类型

Class<?> clazz = AmazingBox.class;
GenericsContext genericsContext = GenericsResolver.resolve(clazz);
Method method = clazz.getMethod("getItem");
Type methodReturnType = genericsContext.method(method).resolveReturnType();

关于java - 获取继承泛型方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58482157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com