2012-01-24 60 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包装器。 –