java - 泛型类型类定义

标签 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正如上面提到的?

最佳答案

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

An obligatory Angelika Langer's FAQ link

关于java - 泛型类型类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756426/

相关文章:

java - 使用构造函数初始化数组中的值的最佳方法是什么?

java - 在linux上配置多个java

java - 与 USB 驱动程序通信

c++ - 为自定义 C++ 类实现 Visual Studio 的自定义向导

java - 使用快速数据顺序错误进行mapreduce

c++ - 从其他类获取数组

java - 从Java中的游戏中删除对象(eclipse)

vb.net - 包含表单的 .NET 类库中的 SetCompatibleTextRenderingDefault

javascript - 如何在 Ghost 中找到所有带有特定标签的帖子并遍历它们?

c++ - 使用可变参数模板进行静态继承