Java 泛型类定义

Java 泛型类定义,java,class,templates,generics,variables,Java,Class,Templates,Generics,Variables,这是一次很好的讨论 但是他们都讨论了类如何接受泛型类型变量。我的问题是泛型类型类定义 该类定义为 protected final <T> T getBeanFromSpringContext(String name, Class<T> requiredType) { if(springApplicationContext != null) { return springApplicationContext.getBean(name, require

这是一次很好的讨论

但是他们都讨论了类如何接受泛型类型变量。我的问题是泛型类型类定义

该类定义为

protected final <T> T getBeanFromSpringContext(String name, Class<T> requiredType) {
    if(springApplicationContext != null) {
        return springApplicationContext.getBean(name, requiredType);
    } else {
        return null;
    }
}
protectedfinal T getBeanFromSpringContext(字符串名称,类requiredType){
if(springApplicationContext!=null){
返回springApplicationContext.getBean(名称,requiredType);
}否则{
返回null;
}
}
现在我知道返回类型是
T
。但是在这之前是由这个类对象建模的类的类型。为什么这不是
,因为我不知道类型

由于返回类型是
T
。这个类能否像上面提到的那样返回
null

前面的
是一个声明,说明该方法是泛型的,并且它有一个类型参数
T
——也就是说,它是一个

可能有点不同:

protected final <T extends Collection> T getBeanFromSpringContext(String name, Class<T> requiredType) {
    if(springApplicationContext != null) {
        return springApplicationContext.getBean(name, requiredType);
    } else {
        return null;
    }
}
protectedfinal T getBeanFromSpringContext(字符串名称,类requiredType){
if(springApplicationContext!=null){
返回springApplicationContext.getBean(名称,requiredType);
}否则{
返回null;
}
}
这不仅意味着您有一个类型参数,还将对其值设置一些约束“边界”

更新:现在,在
null
部分。不幸的是,所有非原语类型在Java中都表示“thistype或
null
”。所以,是的,您总是可以返回null。你总是可以得到一个NPE


顺便说一句,我更喜欢这种单行样式:
return-springApplicationContext==null?null:springApplicationContext.getBean(名称,requiredType)