Как объявить карту, ключ которой не равен нулю, но значение @Nullable в java? - PullRequest
0 голосов
/ 19 июня 2020
• 1000 * Это очень похоже на тег kotlin ?:
java:     @Nullable Object obj
kotlin:   val obj: Any?

Например, я определил такой класс:

class MyRecord<T> {

    @Nullable
    T getValue();
}

Method getValue() возвращает T , и этот T равен nullable.

Если я объявляю такой метод, как:

void doSomething(MyRecord<String> myRecord){
    /*
     * do not check null if there is no @Nullable
     *
     * if (myRecord == null) {...}
     */

     @Nullable String value = myRecord.getValue();

     // value is nullable, it need check
     if (value == null) {...}
}

Это означает, что myRecord не равно null, нет необходимости в: if (myRecord == null) .

И, getValue() of myRecord возвращает nullable String, это очень ясно, потому что я объявляю @Nullable at метод getValue().

Вопрос в том, если Мне нужен параметр Map to, и ключи этой карты должны быть ненулевыми, значения могут быть нулевыми, как мне объявить метод?

void doSomething(Map<K, @Nullable V> map);

или

// Is it so expensive that all values are wrapped by Optional?
void doSomething(Map<K, Optional<V>> map);

или просто

void doSomething(Map<K, V> map);
...