• 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);