42 lines
1.0 KiB
Java
42 lines
1.0 KiB
Java
// enums/SecurityCategory.java
|
|
// (c)2017 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
// More succinct subcategorization of enums
|
|
import onjava.*;
|
|
|
|
enum SecurityCategory {
|
|
STOCK(Security.Stock.class), BOND(Security.Bond.class);
|
|
Security[] values;
|
|
SecurityCategory(Class<? extends Security> kind) {
|
|
values = kind.getEnumConstants();
|
|
}
|
|
interface Security {
|
|
enum Stock implements Security { SHORT, LONG, MARGIN }
|
|
enum Bond implements Security { MUNICIPAL, JUNK }
|
|
}
|
|
public Security randomSelection() {
|
|
return Enums.random(values);
|
|
}
|
|
public static void main(String[] args) {
|
|
for(int i = 0; i < 10; i++) {
|
|
SecurityCategory category =
|
|
Enums.random(SecurityCategory.class);
|
|
System.out.println(category + ": " +
|
|
category.randomSelection());
|
|
}
|
|
}
|
|
}
|
|
/* Output:
|
|
STOCK: MARGIN
|
|
STOCK: LONG
|
|
STOCK: LONG
|
|
STOCK: MARGIN
|
|
BOND: MUNICIPAL
|
|
BOND: MUNICIPAL
|
|
STOCK: LONG
|
|
BOND: JUNK
|
|
STOCK: MARGIN
|
|
BOND: JUNK
|
|
*/
|