2016-12-16 9 views
7

は、次のように我々は、Javaアノテーションを考えてみましょう:注釈:arrayOfが必要なとき

@Hans(value = "test") 

をできるだけ早く私の変化に:私は次のようにアノテーションを使用させていただいておりますKotlinで

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

'value'から 'name'へのプロパティ名は、この構文をもう使用できません。代わりに、arrayOf(..)が必要です。

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

これはバグかデザインの決定か、もしそうなら、それが背後にある理由ですか?事前 で

多くのおかげ種類は

答えて

7

についていいえ、これはバグではありません。 Javaはvalue注釈を特別に扱い、注釈パラメータ名を使用するときに注釈パラメータ名を省略することができます。 Kotlinはこの特別な処理を行い、パラメータ名を省略して@Hans("test")と書くこともできます。配列パラメータの構文をサポートするには、パラメータをvarargとして扱う必要があります。そのため、Kotlinはそれを行い、arrayOfを省略することができます。

+0

説明/お時間をいただきありがとうございます –

関連する問題