当前位置: 首页 > 知识库问答 >
问题:

我应该用@nonnull注释标记接口及其实现吗?

夏昌胤
2023-03-14
TaskCard saveTaskCard(@NonNull TaskCard card, User user);

我把@nonnull(lombok)注释放在一个参数之前,但是如果实现中没有相同的注释,它就不能单独工作。这意味着在实现这个接口的类的方法中,我将需要再次放入这个注释,从而复制代码

@Override
@Transactional
public TaskCard saveTaskCard(@NonNull TaskCard taskCard, User user) {
    taskCard.setUser(user);
    return repository.save(taskCard);
}

问题是,事情应该是这样吗?如果您只将此注释放在接口中,它们将不起作用,如果您只将其放在实现接口的类中,那么API用户可能不明白null不能传递给这些方法。我该怎么办?

共有1个答案

苏边浩
2023-03-14

由于你所说的原因,你当然应该复制它:

  • 将其放在界面上以便用户看到
  • 将其放在实现中,以便Lombok可以检查它

只有当您不考虑nullability实际上是类型的一部分时,它才是多余的--在Java中不是,但它是现实的(例如Kotlin)。

 类似资料:
  • 问题内容: 在阅读有关标记接口的信息时,我偶然发现了以下站点:项目37:使用标记接口定义类型 在这里,根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 1. 标记接口定义了一种由标记的类的实例实现的类型。标记注释没有。这种类型的存在使您可以在编译时捕获错误,而如果使用标记注释,则这些错误在运行时才捕获。 2. 标记接口相对于标记注释的另一个优点是可以更精确地定位它们。如果使用ta

  • 在阅读有关标记接口的内容时,我偶然发现了以下网站:第37项:使用标记接口定义类型 根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 > 标记接口定义由标记类的实例实现的类型;标记注释没有。这种类型的存在允许您在编译时捕获错误,如果您使用标记注释,则直到运行时才能捕获这些错误。 与标记注释相比,标记接口的另一个优点是可以更精确地定位它们。如果使用target,它可以应用于任何类或接

  • 我正在使用Spring开发一个应用程序。我需要使用注释。我有和,这样。这里我很困惑应该在哪里保留注释。 我应该用注释接口还是实现?这两种做法有何不同?

  • null 代码是用Java7和Spring3.1.3编写的。 我试过另一种方法。我使用“around”建议而不是“before”和“after”来访问ProcedingJoinPoint。在这个建议中,我通过反射检查方法是否具有注释'com.xyz.WithAuthorization': 我的批注有'@retentionpolicy.runtime),但我在调试器中看到,在运行时,方法签名中缺少批

  • 本文向大家介绍ReadWriteLock接口及其实现ReentrantReadWriteLock方法,包括了ReadWriteLock接口及其实现ReentrantReadWriteLock方法的使用技巧和注意事项,需要的朋友参考一下 Java并发包的locks包里的锁基本上已经介绍得差不多了,ReentrantLock重入锁是个关键,在清楚的了解了同步器AQS的运行机制后,实际上再分析这些锁就会

  • 我正在使用Intellij13.1.5和Java8 SDK,我已经设置了IntelliJ内置的nullness检查器,以便使用作为我选择的注释。 现在,当我写一个像这样的简单类时 我的下一个猜测是,多个库使用相同的注释名称,可能会出现名称冲突。但不幸的是,警告没有指定包的确切类名。如果是这种情况,一定有某种设置启用隐式注释。 如何在不删除注释的情况下删除此警告?