通用类型类定义

时间:2012-01-06 10:29:58

标签: java class templates generics variables

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吗?

1 个答案:

答案 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。

An obligatory Angelika Langer's FAQ link