Java初始化静态Map,且不可更改(含Java 9)

Java 9之前

Java 9之前需要在static块里初始化静态Map。

public class Demo{
    private static final Map<Integer, String> myMap;
    static {
        Map<Integer, String> aMap = new HashMap<>();
        aMap.put(1, "one");
        aMap.put(2, "two");
        myMap = Collections.unmodifiableMap(aMap);
    }
}

Java 9

Java 9的Map提供了of()工厂方法用来获取不可更改的Map

private static final Map<Integer, String> myMap = Map.of(1, "one", 2, "two");

版权声明:著作权归作者所有。

相关推荐

Java 9的Process和ProcessHandler

Java 9给Process API引入了多种改进,其中新增了ProcessHandler类,它提供了进程相关的信息,如pid,父进程,子进程,进程开始时间以及累计cpu时间等。这里使用Java 9的jshell简单演示下Process的使用:jshell> Process p = new ProcessBuil

Java内部类和静态内部类的区别

Java的内部类根据是否使用static声明分为:静态内部类和非静态内部类,其中非静态内部类一般直接称为内部类。内部类内部类声明示例public class OuterClass {     ...     public static class InnerC

Java8使用Lambda把List转换为Map

使用Java8的Collections可以很简便地把List转换为Map以User为例List里的User名字唯一Map<String, User> result =     users.stream().collect(Collectors.toMap(User::getName,   &nbs

[译]Java 9:一步步迁移项目到Jigsaw(模块化)

Java 9出来了。 我们来试试一个简单的Spring项目。 为了使练习更具挑战性,我们还要尝试使用新的模块系统。 该项目只是一个使用Spring,JDBC和Shedlock的简单示例。1、阅读所有可用的文档和规格说明。 嗯,听起来很无聊。 跳过第一步。2、下载JDK并尝试运行该项目。 我们很幸运,我们所有的依赖只使用公共Jav

Java 9:改进的Try-With-Resources

Java 7之前在Java 7之前,在使用一些资源的类时,如BufferedReader,我们要常常提醒自己,必须要在finally块关闭资源。Java 6示例BufferedReader br = null; try {   br = new BufferedReader(ne