2 x == @NotNull demasiado?

Ene Nielsen:

Los BytesUtil.bytesEqual parámetros utilizar tanto el JetBrains @NotNully la OpenHFT @NotNullanotación el mismo parámetro:

public static boolean bytesEqual(
        @org.jetbrains.annotations.NotNull @NotNull RandomDataInput a, long offset,
        @org.jetbrains.annotations.NotNull @NotNull RandomDataInput second, long secondOffset, long len)
        throws BufferUnderflowException {

que parece redundante - ¿hay alguna razón para usar ambos? Las dos anotaciones se (actualmente) definen como:

package net.openhft.chronicle.core.annotation;

@Documented
@Retention(CLASS)
@Target({METHOD, FIELD, PARAMETER, LOCAL_VARIABLE})
public @interface NotNull {
}

y

package org.jetbrains.annotations;

@Documented
@Retention(CLASS)
@Target({METHOD, FIELD, PARAMETER, LOCAL_VARIABLE})
public @interface NotNull {
  String value() default "";
}

por lo JetBrains @NotNullproporciona un valor de cadena vacía por defecto de lo contrario las dos anotaciones son los mismos ... ¿por qué especificar tanto?

Peter Lawrey:

El problema que tuvimos con la anotación de IntelliJ es que cuando byte de instrumentación de código está activado, se añade un cheque que lanza una IllegalArgumentException. Sin embargo, cuando el código se libera o correr en otro contexto, en vez desencadena una NullPointerException.

Por esta razón, hemos añadido nuestra propia anotación en gran parte de la base de código para que hubiera análisis de código de comprobar en IntelliJ sin que se añadió la verificación de tiempo de ejecución adicional.

Lo más probable es que sólo debe utilizar nuestra anotación de todo el mundo para hacer la excepción lanzada determinista.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215502&siteId=1
Recomendado
Clasificación