gpt4 book ai didi

java - @NonNull 和@Nullable 的正确用法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:04 28 4
gpt4 key购买 nike

我对这些注释的正确使用感到困惑。

android.support.annotation.NonNull;
android.support.annotation.Nullable;

@NonNull 文档中的信息说:

Denotes that a parameter, field or method return value can never be null.

对于参数,当没有什么可以阻止您传递 null 时,这意味着什么?

例如,假设我有一个类 MyObject,并且一个实例可能有也可能没有标题。

public final class MyObject {

private String title = null;

public void setTitle(String title) {
if (title == null)
throw new NullPointerException();
this.title = title;
}

public void clearTitle() {
title = null;
}
}

这里我使用 null 来表示没有标题,但这是一个实现细节,所以我不想要一个单一的方法来设置和清除标题。

如果我将字段 title 标记为 @Nullable,android studio 告诉我 setTitle 的参数可能应该标记为 @Nullable 也是(但这与我想要的相反)。

如果我将 setTitle 方法的参数标记为 @NonNull,我会收到一条警告,指出条件 title == null 始终是

在这种情况下,这些注释的正确用法是什么?如果 @NonNull 表示参数不能永远不会为 null 使用它来表示不应该是错误的吗?如果是,是否有正确的方式来表明这一点?

最佳答案

关键是这个注解是某种契约,所以如果你正确地注解了你的方法,你就不需要进行检查。 Android Studio 会检查您是否弄乱了它。您仍然可以忽略它,但这会导致编译器警告。

如果您忽略无用的(根据契约(Contract))安全检查,它将正确地抛出 nullpointerexceptions。但是开发人员收到了您的注释警告。

关于java - @NonNull 和@Nullable 的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com