2012-01-24 10 views
0

メンバーのコンストラクタに別の列挙型のリストが含まれている列挙型があります。列挙型の配列リスト内の項目の自動完成/可視性の表示は可能ですか?以下のコードをご覧ください。Javaは列挙型の値を取得しますか?

私は与えられたテーブルの列の可視性を得たいと考えています。それは可能ですか?

DatabaseDefinitions.Tables.marketOrders.columns.id //どのようにすることができますか?

public class DatabaseDefinitions { 
    public static enum Tables { 
     marketOrders(new Columns[]{Columns.id, 
      Columns.symbol, 
      Columns.orderType, 
      Columns.quantity, 
      Columns.priceLimit, 
      Columns.priceStop, 
      Columns.goodAfterDate, 
      Columns.goodUntilDate, 
      Columns.priceAverageFill}), 
     ; 

     public Columns[] columns; 

     Tables(Columns[] columns){ 
      this.columns = columns; 
     } 
    } 

    public static enum Columns { 
     id, 
     symbol, 
     orderType, 
     quantity, 
     priceLimit, 
     priceStop, 
     goodAfterDate, 
     goodUntilDate, 
     priceAverageFill, 
     exchange, 
     currency, 
     securityType, 
     price, 
     sizeBid, 
     sizeAsk, 
     sizeLast, 
     sizeVolume, 
     dateTime, 
    } 

    public static enum Queries { 

    } 
} 
+0

さらにもう1つのこと:定数(つまり最終的な静的変数)のように、Java命名規則に従って、列挙型にCAPITALISED_VALUE_NAMESを使用してください。 http://www.oracle.com/technetwork/java/codeconventions-135099.html#367 – Wizart

答えて

0

Tables class/enumにpublic getterを追加します。

public Columns[] getColumns() { 
    return this.columns; 
} 

UPDATE

おっと、 '列' は既に「国民配列です。それでは質問は何ですか?この場合、列の配列に簡単にアクセスできます。

if (DatabaseDefinitions.Tables.marketOrders.columns[0].equals(Columns.id)) { 
    // ... 
} 

一方、「列」配列を「プライベート」にして、ゲッターを介してアクセスします。しかしそれはあなたの特定の仕事に依存するかもしれません。

+0

配列については、「パブリックゲッター」はほとんど悪いです。 –

+0

少なくとも、配列の列を最後にします。スタートからスタートまでをすべて解決するわけではありません。 – user949300

+0

はるかに良い:変更不可能なリストラッパーを返します。 –