简体   繁体   中英

Java get enum array values?

I have an enum whose member constructors contains a list of another enum. Is it possible to auto complete / gain visibility of items in the enum's array list? Please see the code below.

I would like to gain visibility of the columns in a given table. Is it possible to do so?

DatabaseDefinitions.Tables.marketOrders.columns.id // How can it be done?

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 {

    }
}

I would add a public getter in Tables class/enum.

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

UPDATE

Oops, 'columns' is a 'public' array already. Then what is a question? You can easily access array of columns in this case and each its item, eg

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

Meanwhile, I would make 'columns' array 'private' and give an access through a getter. But it may depend on your particular task.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM