对 generics here 进行了很好的讨论
但是他们都讨论了类如何接受泛型类型变量。我的问题是关于泛型类型类定义。
该类定义为
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
正如上面提到的?
最佳答案
<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;
}
}
这不仅表明您有一个类型参数,而且还会对其值施加一些约束“边界”。
更新:现在,在null
上部分。不幸的是,所有非原始类型在 Java 中都意味着“此类型或 null
”。所以是的,你总是可以返回 null。而且您始终可以获得 NPE。
关于java - 泛型类型类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756426/