背景
我曾经写过这样的方法:
private SortedSet createSortedSet() {
return new TreeSet();
}
应该这样称呼:
Set set = createSortedSet();
这样做很好(尽管我在研究当前问题时在这里的答案中看到这很容易出错)。
现状
无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中):
private T evaluate(String expression) {
ExpressionEvaluator evaluator = pageContext.getExpressionEvaluator();
return evaluator.evaluate(expression, T, null, pageContext.getVariableResolver());
}
其目的是能够这样称呼:
Integer width = evaluate(widthStr);
我的evaluate方法中的代码显然不起作用。第二个论点
evaluator.evaluate()
应该是类对象。这让我想到:
我的问题
如何获取泛型(返回)类型的类?我应该写什么来代替T作为第二个要评估的参数?
编辑:结论
尼古拉斯似乎是对的,这是做不到的,我需要把类作为参数传递给我的方法。好处是,由于他的解决方案使参数在泛型类型上参数化,所以我对该参数进行了编译检查。