一个人应该如何在泛型中实现空对象模式?

我喜欢空对象模式的想法,并强迫我使用它,直到它真正感觉正常且良好为止。目前,我还没有看到如何在泛型类型中使用它。我知道可以定义第二个泛型类型并传入类以构造默认对象,但是对于这种模式,这确实感觉太多了。有什么好办法吗?

public class GenericExample<T> {
    public static final GenericExample NULL = ???;

    private T attribute;

    public GenericExample(T attribute) {
        this.attribute = attribute;
    }
}

public class HoldGeneric {
    private GenericExample<String> name = GenericExample.NULL;

    public initLater(String name) {
        this.name = new GenericExample<String>(name);
    }
}
dkatzel

您可以遵循JDK的操作,并使用静态方法来推断泛型类型并进行未经检查的强制转换。

java.util.Collections为空列表和集合实现Null对象。在Java泛型中,有一个公共静态字段。

public static final List EMPTY_LIST = new EmptyList();

发布泛型:现在有静态方法可以推断泛型并执行未经检查的转换,以将其转换为正确的类型。类型并不重要,因为集合是空的,但是它使编译器感到满意。

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在泛型中实现空对象模式?

来自分类Dev

一个人应该如何在Windows 10中压缩一个大文件夹,将其上传到GDrive,然后解压缩?

来自分类Dev

一个人如何在TableDefs中搜索链接表?

来自分类Dev

一个人将如何在Symfony2中过滤表单集合?

来自分类Dev

一个人如何实现一个observer_ptr?

来自分类Dev

一个人应该如何连接一组数组?

来自分类Dev

一个人如何在2D模式下绘制3D矩阵?

来自分类Dev

一个人应该如何组织AngularJS服务

来自分类Dev

一个人如何在Outlook 2011 Mac中创建自定义“智能文件夹”?

来自分类Dev

一个人如何访问超类?

来自分类Dev

一个人如何从线程抛出异常?

来自分类Dev

一个人如何使用Ubuntu for Android?

来自分类Dev

一个人如何加总分?

来自分类Dev

一个人如何访问超类?

来自分类Dev

一个人如何使用Ubuntu for Android?

来自分类Dev

从array中删除一个人

来自分类Dev

如何在alexa上获得一个人的名字?

来自分类Dev

一个人如何在bash中加入具有分隔数据的文件?

来自分类Dev

一个人如何在C ++中单独给一个ProgID实例化一个类?

来自分类Dev

如何从一个人的补语转换为一个人的补语

来自分类Dev

如何获得在Git中修改文件的最后一个人?

来自分类Dev

一个人如何才能获取列表中的所有其他值?

来自分类Dev

一个人如何遍历Meteor中的嵌入式文档?

来自分类Dev

如何在SQLite中查找与另一个人共享同一地址的所有人

来自分类Dev

一个人应该在一个人的.history文件夹中跟踪文件吗

来自分类Dev

一个人应该保护自己的PC多远?

来自分类Dev

如何在android中显示一个人的当前年龄(25岁11个月20天)?

来自分类Dev

一个人如何使用Maven个人资料?

来自分类Dev

给定一个人的名字,如何查询关于这个人的wikidata属性?

Related 相关文章

  1. 1

    如何在泛型中实现空对象模式?

  2. 2

    一个人应该如何在Windows 10中压缩一个大文件夹,将其上传到GDrive,然后解压缩?

  3. 3

    一个人如何在TableDefs中搜索链接表?

  4. 4

    一个人将如何在Symfony2中过滤表单集合?

  5. 5

    一个人如何实现一个observer_ptr?

  6. 6

    一个人应该如何连接一组数组?

  7. 7

    一个人如何在2D模式下绘制3D矩阵?

  8. 8

    一个人应该如何组织AngularJS服务

  9. 9

    一个人如何在Outlook 2011 Mac中创建自定义“智能文件夹”?

  10. 10

    一个人如何访问超类?

  11. 11

    一个人如何从线程抛出异常?

  12. 12

    一个人如何使用Ubuntu for Android?

  13. 13

    一个人如何加总分?

  14. 14

    一个人如何访问超类?

  15. 15

    一个人如何使用Ubuntu for Android?

  16. 16

    从array中删除一个人

  17. 17

    如何在alexa上获得一个人的名字?

  18. 18

    一个人如何在bash中加入具有分隔数据的文件?

  19. 19

    一个人如何在C ++中单独给一个ProgID实例化一个类?

  20. 20

    如何从一个人的补语转换为一个人的补语

  21. 21

    如何获得在Git中修改文件的最后一个人?

  22. 22

    一个人如何才能获取列表中的所有其他值?

  23. 23

    一个人如何遍历Meteor中的嵌入式文档?

  24. 24

    如何在SQLite中查找与另一个人共享同一地址的所有人

  25. 25

    一个人应该在一个人的.history文件夹中跟踪文件吗

  26. 26

    一个人应该保护自己的PC多远?

  27. 27

    如何在android中显示一个人的当前年龄(25岁11个月20天)?

  28. 28

    一个人如何使用Maven个人资料?

  29. 29

    给定一个人的名字,如何查询关于这个人的wikidata属性?

热门标签

归档