Java泛型:获取泛型方法的返回类型的类

回答:

我曾经写过这种方法:

private <T> SortedSet<T> createSortedSet() {

return new TreeSet<T>();

}

应该这样称呼它:

Set<String> set = createSortedSet();

这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。

回答:

无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中):

private <T> T evaluate(String expression) {

ExpressionEvaluator evaluator = pageContext.getExpressionEvaluator();

return evaluator.evaluate(expression, T, null, pageContext.getVariableResolver());

}

目的是可以这样称呼:

Integer width = evaluate(widthStr);

我的评估方法中的代码显然不起作用。的第二个参数evaluator.evaluate()应该是Class对象。这导致我:

回答:

如何获得通用(返回)类型的类?我应该写些什么代替T作为要评估的第二个参数?

回答:

Nicolas似乎是对的,无法完成,我需要将类作为参数传递给我的方法。好处是,由于他的解决方案使参数在通用类型上参数化,因此我对该参数进行了编译检查。

回答:

不幸的是,您肯定必须将方法更改为:

private <T> T evaluate(Class<T> clazz, String expression)

然后clazz作为第二个参数传递 不像您预期​​的那么短。

以上是 Java泛型:获取泛型方法的返回类型的类 的全部内容, 来源链接: utcz.com/qa/407188.html

回到顶部