2016-12-16 10 views
7

powiedzmy, że mamy adnotacji Java w następujący sposób:Objaśnienia: kiedy jest arrayOf potrzebne

@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
public @interface Hans { 
    String[] value() default {}; 
} 

W Kotlin wolno mi użyć adnotacji w następujący sposób:

@Hans(value = "test") 

Tak szybko, jak to zmienić nazwa właściwości od "value" do "name" nie może już używać tej składni, zamiast tego potrzebuję mieć arrayOf (..).

@Hans(name = arrayOf("test")) 

Jest to błąd lub decyzja projektowa, a jeśli tak, to z jakiego powodu.

Wiele z góry dzięki poważaniem

Odpowiedz

7

Nie, to nie jest błąd. Java w szczególności traktuje adnotację value i pozwala na pomijanie nazwy parametru adnotacji podczas jej używania. Kotlin stosuje się do tego specjalnego traktowania, a także pozwala pominąć nazwę parametru, umożliwiając napisanie @Hans("test"). Obsługa tej składni dla parametrów tablicy wymaga potraktowania parametru jako vararg, więc Kotlin to robi i pozwala pominąć arrayOf.

+0

Wielkie dzięki za wyjaśnienie/czas –

Powiązane problemy