2 x @NotNull == слишком много? - PullRequest
       23

2 x @NotNull == слишком много?

0 голосов
/ 13 февраля 2019

Параметры BytesUtil.bytesEqual используют и Jetbrains @NotNull, и аннотацию OpenHFT @NotNull с одним и тем же параметром:

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 {

, который представляется избыточным - есть ли причинадля использования обоих?Две аннотации (в настоящее время) определены как:

package net.openhft.chronicle.core.annotation;

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

и

package org.jetbrains.annotations;

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

, поэтому Jetbrains @NotNull предоставляет значение пустой строки по умолчанию, в противном случае две аннотации одинаковы ...так зачем указывать оба?

1 Ответ

0 голосов
/ 14 февраля 2019

Проблема, возникшая у нас с аннотацией IntelliJ, заключается в том, что, когда инструментарий байт-кода включен, он добавляет проверку, которая выдает IllegalArgumentException.Однако, когда код освобождается или запускается в другом контексте, он вместо этого вызывает NullPointerException.

. По этой причине мы добавили нашу собственную аннотацию для большей части базы кода, чтобы в IntelliJ была проверка кода для анализа.без добавления дополнительной проверки во время выполнения.

Скорее всего, мы должны везде использовать нашу аннотацию только для того, чтобы исключение было выброшено детерминированным.

...