Intellij Idea 未注解的方法覆盖用@NotNull注解的方法

fcy6dtqo  于 2023-05-28  发布在  其他
关注(0)|答案(4)|浏览(397)

我正在实现一个自定义数据结构,它提供了集合的一些属性和列表的其他属性。对于大多数实现的方法,我在Java 7上的IntelliJ IDEA中得到了这个奇怪的警告:
未注解的方法覆盖用@NotNull注解的方法

编辑:下面的代码与问题无关,而是原始问题的一部分。此警告是由于IntelliJ中的一个错误而出现的。请参阅answer以(希望)解决您的问题。

我还没有找到任何相关的东西,我不确定我是否真的错过了某种检查,但我已经查看了ArrayList和List接口的源代码,看不到这个警告实际上是关于什么的。它在每个引用列表字段的实现方法上。下面是我创建的类的一个片段:

public class ListHashSet<T> implements List<T>, Set<T> {
private ArrayList<T> list;
private HashSet<T> set;

/**
 * Constructs a new, empty list hash set with the specified initial
 * capacity and load factor.
 *
 * @param      initialCapacity the initial capacity of the list hash set
 * @param      loadFactor      the load factor of the list hash set
 * @throws     IllegalArgumentException  if the initial capacity is less
 *               than zero, or if the load factor is nonpositive
 */
public ListHashSet(int initialCapacity, float loadFactor) {
    set = new HashSet<>(initialCapacity, loadFactor);
    list = new ArrayList<>(initialCapacity);
}
...
/**
 * The Object array representation of this collection
 * @return an Object array in insertion order
 */
@Override
public Object[] toArray() {  // warning is on this line for the toArray() method
    return list.toArray();
}

编辑:我在类中有这些额外的构造函数:

public ListHashSet(int initialCapacity) {
    this(initialCapacity, .75f);
}

public ListHashSet() {
    this(16, .75f);
}
jgwigjjp

jgwigjjp1#

尝试将@Nonnulljavax.annotation.Nonnull)添加到toArray方法。
当我添加此注解时,警告对我来说消失了。我认为警告消息是不正确的,它说@NotNull丢失。

jgwigjjp

jgwigjjp2#

我同意这是一个错字上Nonnull与。NotNull。但是,似乎还有其他一些bug。我正在实现一个自定义Set,它抱怨Iterator和toArray方法没有注解。但是,查看JDK,在Set或Collection的接口上似乎没有任何这样的注解。
http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/0eb62e4a75e6/src/share/classes/java/util/Set.javahttp://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/0eb62e4a75e6/src/share/classes/java/util/Collection.java
奇怪
无论如何,另一种选择是在类或方法中添加@SuppressWarnings标签:@SuppressWarnings(“NullableProblems”)

uinbv5nw

uinbv5nw3#

尝试添加:

private ListHashSet() {}
t1qtbnec

t1qtbnec4#

我也面临同样的问题,并通过为该包添加www.example.com来解决它package-info.java。在package-info.java下添加了annotation @NonNullApi。我的包info.java看起来像-

@NonNullApi
package org.example.auth.repositories;

import org.springframework.lang.NonNullApi;

相关问题