根据Collections.emptyList()
方法的注释,它返回一个空的不可变列表.
如果我们直接赋值给对象,这是合理的.例:
public class ImmutableList {
public static void main(String[] args){
List<String> namesList=Collections.emptyList();
String[] names = {"Name1", "Name2", "Name3"};
namesList.addAll(Arrays.asList(names));
}
private List<String> getList() {
String[] names = {"Name1", "Name2", "Name3"};
return Arrays.asList(names);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们运行上面的程序,它会引发异常
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
at org.learn.list.ImmutableList.main(ImmutableList.java:11)
Run Code Online (Sandbox Code Playgroud)
但是,如果我们将方法的输出分配给此变量,那么它运行正常.例:
public class ImmutableListTest2 {
public static void main(String[] args){
List<String> namesList=Collections.emptyList();
ImmutableListTest2 ce = new ImmutableListTest2();
namesList = ce.getList();
namesList.forEach(System.out::print);
}
private List<String> getList() {
String[] names = …
Run Code Online (Sandbox Code Playgroud) enum Month{JANUARY, FEBRUARY, MARCH, ...
}
enum Week{MONDAY, TUESDAY, WEDNESDAY, ...
}
Run Code Online (Sandbox Code Playgroud)
Map<Month, String> monthMap = new EnumMap<>(Month.class);
可以像这样创建简单的 EnumMap,其中键是 Enum,值是 String
但是,我想创建 EnumMap,其中键和值都是枚举类型。
Map<Month, Week> monthWeekMap = new EnumMap<>
....
创建上述枚举映射对象的语法是什么。