但他们都谈论类如何接受泛型变量。我的问题是泛型类定义。
该类定义为
protected final <T> T getBeanFromSpringContext(String name, Class<T> requiredType) {
if(springApplicationContext != null) {
return springApplicationContext.getBean(name, requiredType);
} else {
return null;
}
}
现在我知道返回类型是T
。但在此之前<T>
是由此Class对象建模的类的类型。为什么这不是<?>
因为我不知道类型?
由于返回类型为T
。如上所述,此课程可以返回null
吗?
答案 0 :(得分:2)
之前的 <T>
是一个声明,说该方法是通用的,并且它有一个类型参数T
- 也就是说,它是definition of a type variable
可能有点不同:
protected final <T extends Collection> T getBeanFromSpringContext(String name, Class<T> requiredType) {
if(springApplicationContext != null) {
return springApplicationContext.getBean(name, requiredType);
} else {
return null;
}
}
这不仅会说你有一个类型参数,而且还会对它的值设置一些约束“bounds”。
更新:现在,在null
部分。不幸的是,所有非原始类型在Java中都表示“此类型或null
”。所以是的,你总是可以返回null。你总能得到一份NPE。