【问题标题】:What is the best alternative to null in object oriented programming?面向对象编程中 null 的最佳替代方案是什么?
【发布时间】:2015-02-08 07:35:33
【问题描述】:

我对 OOP 中的 avoiding null 不满意。 有没有替代的解决方案? 我也不喜欢在this way 中避免它。

最好的处理方法是什么?

【问题讨论】:

  • 不要让事情为NULL?!?
  • 你为什么要避免空值? Null 并不是一件坏事。
  • 考虑可选(Java 8)
  • 你可以用一个空的方法体来创建一个对象......这与更多的代码基本上是一样的......

标签: oop object


【解决方案1】:

Java 8 具有新的 Optional 类型,我认为这就是您要问的问题

一个容器对象,它可能包含也可能不包含非空值。如果存在值,isPresent() 将返回 true,get() 将返回该值。

【讨论】:

  • 请注意不是Serializable
  • @Greg Kopff,这是一个依赖于语言的解决方案。其实我想从设计的角度来解决。
  • Guava 也有Optional。如果您仍然坚持使用 java 7,这可能会很有用。
  • @user2749218 它可能与语言有关,但您使用 Java 标记了问题...
  • Optional 之类的东西并不特定于 Java,实际上许多函数式编程语言都有类似的东西(Haskell Maybe、Scala Option、ML Option 等)。 Java 8 借鉴了这些语言。
【解决方案2】:

尽管您不喜欢它,Null Object Pattern 是避免 null 的最佳方法之一。当你可以返回一个空列表时,也永远不要返回 null。

【讨论】:

  • 最常见的空对象模式示例是空字符串“”。当你不得不说什么但你不想说什么时使用它:)
  • 呵呵,很好的解释:-)
【解决方案3】:

我喜欢添加 Empty 的静态类属性。这会返回一个可以与之比较的对象的特定值——比如 .NET 中的 string.Empty

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 2017-06-11
    • 1970-01-01
    • 2021-01-17
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多