Los BytesUtil.bytesEqual parámetros utilizar tanto el JetBrains @NotNull
y la OpenHFT @NotNull
anotació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 @NotNull
proporciona un valor de cadena vacía por defecto de lo contrario las dos anotaciones son los mismos ... ¿por qué especificar tanto?
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.