我有这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/