30

注釈は、HashMap などの複雑な戻り値の型を持つことができます。

私は次のようなものを探しています:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface column {
    public HashMap<String, String> table();
}

だから私は(疑似コード)のように注釈を付けた定数を持つことができます:

@column({table=(dbName, tableName), table=(dbName, tableName2)})
public static final String USER_ID = "userid";

Annotation で複雑な戻り値の型を使用できない場合、この種の場合の適切な方法はありますか?

4

2 に答える 2

71

いいえ、注釈要素は、プリミティブ型、文字列、enumClass、、その他の注釈、またはこれらのいずれかの配列のみにすることができます。これらの種類の構造を表す一般的な方法は、別のアノテーションタイプを宣言することです。

public @interface TableMapping {
  public String dbName();
  public String tableName();
}

次に言う

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface column {
    public TableMapping[] table();
}

そして、注釈を次のように使用します

@column(table={
  @TableMapping(dbName="dbName", tableName="tableName"),
  @TableMapping(dbName="db2", tableName="table2")
})
public String userId = "userid";
于 2012-11-26T16:35:45.387 に答える