返回一个 Void 对象

新手上路,请多包涵

当它不是原始类型时,返回 Void 类型的正确方法是什么?例如。我目前使用 null 如下。

 interface B<E>{ E method(); }

class A implements B<Void>{

    public Void method(){
        // do something
        return null;
    }
}

原文由 Robert 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

Void 类是一个不可实例化的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用。

因此,以下任何一项都足够了:

  • 参数化 Object 并返回 new Object()null
  • 参数化 Void 并返回 null
  • 用你的 NullObject 参数化

您无法使用此方法 void ,其他任何东西都会返回 _一些东西_。由于忽略了某些内容,因此您可以返回任何内容。

原文由 Bozho 发布,翻译遵循 CC BY-SA 2.5 许可协议

Java 8 引入了一个新类 Optional<T> ,可以在这种情况下使用。要使用它,您需要按如下方式稍微修改您的代码:

 interface B<E>{ Optional<E> method(); }

class A implements B<Void>{

    public Optional<Void> method(){
        // do something
        return Optional.empty();
    }
}

这使您可以确保 始终 从您的方法中获得非空返回值,即使在没有任何可返回的情况下也是如此。当与检测 null 何时可以或不能返回的工具结合使用时,它特别强大,例如 Eclipse @NonNull@Nullable

原文由 Erick G. Hagstrom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题