【问题标题】:NullType vs Void for method argument that is always nullNullType vs Void 用于始终为空的方法参数
【发布时间】:2016-04-08 11:28:35
【问题描述】:

我有一些由框架调用的通用处理器。参数是我处理的负载。

interface Processor<T, U> {
    U process(T t);
}

在某些情况下,有效负载没有意义并且不存在(仅计算并返回响应)。在这种情况下,框架将 null 作为参数传递。为此我决定使用javax.lang.model.type.NullType

new Processor<NullType, String>() {
  public String process(NullType unused) {
    ...
    return result;
  }
}

我在这里误用了NullType 的意图吗?是java.lang.Void 还是其他更合适的?

【问题讨论】:

  • " 这是表达式 null" 的类型 ...所以它表示您希望它表示...现在哪里有混淆?
  • @Tom 好吧,NullType 的两个实例可能实际上并不相等(因为它是一个接口) - 所以它们代表null,但代表Objects.equals(aNullType, bNullType) == false,而Objects.equals(null, null) == true
  • 在使用 android sdk 时,Void 是这些情况下常用的类型。

标签: java null


【解决方案1】:

在这些情况下我更喜欢Void,这使得传递null 成为唯一有效的参数。

另一方面,NullType 可以被实例化。


出于好奇,it is possible to instantiate an object of type Void

【讨论】:

  • 我同意——原因如下:NullType 旨在表示一种类型。与 ArrayType(在同一个包中)不是数组一样,NullType 也不为空。在类似情况下使用 Void 是正常的,例如 Callable 或 Future
  • 到目前为止,我在类似的情况下也使用过Void,但我总觉得它是用来处理返回类型的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多