【发布时间】:2021-03-30 15:29:28
【问题描述】:
我可以用'?'来定义它:
private static final Map<Class<? extends SuperClass>, String> map=
new HashMap<Class<? extends SuperClass>, String>() {
private static final long serialVersionUID = 913392463302576279L;
{
put(SubClaas1.class, "sub1");
put(SubClaas2.class, "sub2");
}
};
但是用T定义,编译报错:
private static <T extends SuperClass> Map<Class<T>, String> map = new HashMap<>();
如何定义它使用'T'模式。
【问题讨论】:
-
T应该是什么,谁/什么赋予了T的价值?如果要使用T,则需要将其声明为封装类的泛型类型参数。 -
是什么让您认为您想要或需要带有命名类型参数的表单(在您的问题中命名为
T)? -
@OleV.V.很抱歉让你感到困惑。我只是觉得“T”型比“?”更通用类型。
-
现在我明白你为什么问了。我当然认为带有
<?>的表单至少是通用的。所以我的建议是你接受它。
标签: java