我正在维护一个类以保持所有字段外部化。包含多个此类值及其集合的示例类是:
public static class State {
public static final String DRAFT = "DRAFT";
public static final String APPROVED = "APPROVED";
public static final String RECEIVED = "RECEIVED";
public static final String PENDING = "PENDING";
public static List<String> IMMUTABLE_STATES = Arrays.asList(APPROVED,RECEIVED);
public static List<String> IRREVERSIBLE_STATES = Arrays.asList(DRAFT,RECEIEVED,PENDING);
}
可以看出IRREVERSIBLE_STATES
包含IMMUTABLE_STATES
所有的所有字段(状态)。另外,在这种情况下,它还有一些额外的PENDING
。
有没有办法优雅地初始化第二个列表,以便它直接从第一个列表中获取值而不是再次声明所有常见状态?我是否必须编写一种方法来实现这一目标?可以作为初始化程序在一行中完成吗?
答案 0 :(得分:4)
如何使用流?
1 2 3 4
1 2 3 5
1 2 3 6
...
1 14 15 16
2 3 4 5
...
12 14 15 16
13 14 15 16
此外,您的&#34;州&#34;感觉他们应该是public static List<String> LIST1 = Arrays.asList("1", "2");
public static List<String> LIST2 = Stream.concat(LIST1.stream(), Arrays.asList("3", "4").stream())
.collect(Collectors.toList());
,而不是字符串。
答案 1 :(得分:1)
虽然连接流可以在这里工作, 一个更简单的解决方案是使用静态初始化器:
public static List<String> IRREVERSIBLE_STATES = new ArrayList<>(IMMUTABLE_STATES);
static {
IRREVERSIBLE_STATES.addAll(Arrays.asList(DRAFT, PENDING));
}