如何在泛型类型上调用特定方法?我想调用一个getter / setter方法。
编辑:例如:
class BurningSun<T>
{
public void kitchenSink()
{
Class c = Class.forName(/*What to put here for <T> ?*/)
/*
Reflections code
*/
}
}
嗯,那么bean的getter方法如何在各种框架中调用和设置?
答案 0 :(得分:3)
在泛型类型中,如果没有人告诉你,就无法在运行时获取type参数的名称。
在运行时,BurningSun<String>
和BurningSun<Integer>
完全等效,您甚至可以将其中一个投射到另一个中(但这不是类型安全的。)
所以,通常如果你真的需要你的泛型对象中的type参数的类对象,你可以让别人在构造函数中给你。
class BurningSun<T> {
private Class<T> paramClass;
public BurningSun(Class<T> pClass) {
this.paramClass = pClass;
}
public void kitchenSink() {
T t = paramClass.newInstance();
}
}
(你需要在这里捕捉或声明一些例外。)
答案 1 :(得分:2)
基于反射的所有方法调用都是将对象推送到方法中最简单,祈祷它可行。所以施放&amp;保持手指交叉。