2012-01-24 142 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

還有一件事:請遵循Java命名代碼約定,並將CAPITALISED_VALUE_NAMES用於枚舉,如常量(即最終靜態變量)。請參閱http://www.oracle.com/technetwork/java/codeconventions-135099.html#367 – Wizart

回答

0

我會在Tables class/enum中添加一個公共getter。

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

UPDATE

糟糕, '列' 是一個 '公共' 陣列已經。那麼什麼是問題?在這種情況下,您可以輕鬆訪問數組列,並且每個項目(例如,

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

與此同時,我將'列'數組'私人',並通過一個getter訪問。但這可能取決於您的特定任務。

+0

對於一個數組,「公共getter」幾乎是一樣糟糕。 –

+0

至少,使數組列最終。不是一切的解決方案,而是一個開始。 – user949300

+0

好得多:返回一個不可修改的List包裝器。 –