una poo conectar con como clases clase java intellij-idea annotations notnull

java - poo - jframe con clases



El método no anotado anula el método anotado con @NotNull (3)

Estoy implementando una estructura de datos personalizada que me da algunas propiedades de conjuntos y otras propiedades de listas. Sin embargo, para la mayoría de los métodos implementados, recibo esta extraña advertencia en IntelliJ IDEA en Java 7:

El método no anotado anula el método anotado con @NotNull

EDITAR : El siguiente código no es relevante para el problema, sino que forma parte de la pregunta original. Esta advertencia aparece debido a un error en IntelliJ. Vea la answer para (con suerte) resolver su problema.

No he podido encontrar nada relevante al respecto y no estoy seguro de que me esté faltando algún tipo de comprobación, pero he revisado la fuente de ArrayList y la interfaz de la Lista y no puedo ver qué. esta advertencia es realmente acerca de Está en cada método implementado que hace referencia al campo de lista. Aquí hay un fragmento de la clase que he hecho:

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(); }

EDITAR: Tengo estos constructores adicionales en la clase:

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


Estoy de acuerdo en que es un error tipográfico en Nonnull vs. NotNull. Sin embargo, también parece haber algún otro error pasando. Estaba implementando un conjunto personalizado y se quejaba de que Iterator y toArray métodos no tenían la anotación. Pero, al mirar el JDK, no parece haber ninguna anotación de este tipo en la interfaz de Set o Collection.

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/0eb62e4a75e6/src/share/classes/java/util/Set.java http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/0eb62e4a75e6/src/share/classes/java/util/Collection.java

Extraño.

De todos modos, la otra opción es agregar una etiqueta @SuppressWarnings a tu clase o método: @SuppressWarnings ("NullableProblems")


Intenta agregar:

private ListHashSet() {}


Intente agregar @Nonnull ( javax.annotation.Nonnull ) al método toArray .

La advertencia desapareció para mí cuando agregué esta anotación. Creo que el mensaje de advertencia es incorrecto, lo que dice que falta @NotNull .