Подумайте иначе: в чем преимущество предоставления @NotNull
в свойстве publi c (а не, например, сокрытия всей информации в @Metadata
)? Это не имеет никакого значения для среды выполнения JVM; основное преимущество - это документация для пользователей класса и их инструментов, поэтому они знают, что getMyOtherString
никогда не возвращает null. Но они не могут получить доступ к myString
в первую очередь, поэтому нет смысла аннотировать его.
Это не совсем отвечает, почему поле myOtherString
аннотировано, а не просто геттер и сеттер; Я предполагаю, что это потому, что его можно раскрыть с помощью @JvmField
, поэтому в некоторых случаях необходимо написать код, который аннотирует его, и было немного удобнее не проверять, отображается ли поле.