Java泛型中如何在getBox方法返回空参数化Box类实例
实现方案
你当前的代码存在两处语法问题,修正后即可正确返回空的参数化Box实例:
- 类定义前不能额外加静态泛型参数声明,泛型类的类型参数直接跟在类名后即可,静态成员无法访问类层面声明的泛型参数
- 静态泛型方法的类型参数声明与返回值类型之间需要保留空格,否则编译器无法识别语法
修正后代码
public class Box<T> { private T object; public static <T> Box<T> getBox() { // 返回空Box实例,内部object字段默认值为null,即为空的参数化容器 return new Box<>(); // Java 7及以上版本支持菱形语法,无需重复书写类型参数 // 低版本Java可写为 return new Box<T>(); } }
调用方式
调用方法时编译器会根据上下文自动推断泛型类型,也可以显式指定类型:
// 编译器自动推断泛型为String Box<String> stringEmptyBox = Box.getBox(); // 显式指定泛型为Integer Box<Integer> intEmptyBox = Box.<Integer>getBox();
注意:不要通过返回
null的方式实现空Box,上述实现返回的是正常实例化的类型安全容器,仅内部未存储内容,不会引发空指针异常。
内容的提问来源于stack exchange,提问作者Kristina
相关产品推荐
相关产品推荐

