【发布时间】:2011-09-19 15:02:41
【问题描述】:
@NotNull/@NonNull 等注解的问题在于它们在运行时没有被强制执行。我想做如下的事情:
class Foo {
String nullable_string;
final NonNullable<String> nn_string = new NonNullable<String>();
...
public void mutate(String arg) {
mutable_string = arg; // arg could be null
nn_string.set(arg); // throws NullPointerException for me if arg is null.
}
...
}
标准NonNullable<T> 泛型是否存在于某处,如果不存在,是否有理由认为这是一个坏主意?
【问题讨论】:
-
您对这样的 NonNullable 泛型有何期望。它仍然在其核心中扩展 Object;并且每个 Object 都可以引用 null。无论 NonNullable 是如何构建的;我还可以
NonNullable nn = null; -
@Yhn: 这样一个类的重点不是确保
NonNullable类型的引用永远不会是null,而是确保它不包含null。也就是说,NonNullable引用永远不应该是null,这可以通过将实例分配给示例中的final字段来确保。 -
查看 JSR 305 状态:stackoverflow.com/questions/2289694/…
-
我主要使用
import javax.annotation.xxx
标签: java generics null nullpointerexception non-nullable