Javaの不変オブジェクトは、最終的なコレクションは、簡単な例をグアバ

ローカル環境

  • jdk1.8

説明

最後のキーワードjavaのは、それが参照型である場合には、それだけで再割り当て、実際に変更することはできません我々はすべて知っているが、最終的には変更され、プロパティ値は、参照されるオブジェクトに変更することができます。
そして、非修正可能なリスト、マップを構築する方法、これらを設定し、それを他の目的は、また、Googleのグアバでコレクションを来るJDKで構築することができます。

サンプルコード

import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import lombok.extern.slf4j.Slf4j;

/**
 *         <dependency>
 *             <groupId>org.projectlombok</groupId>
 *             <artifactId>lombok</artifactId>
 *             <version>1.18.8</version>
 *         </dependency>
 *
 *         <dependency>
 *             <groupId>com.google.guava</groupId>
 *             <artifactId>guava</artifactId>
 *             <version>23.0</version>
 *         </dependency>
 */
@Slf4j
public final class UnModify {

    // 初始化一个 final 修饰的list
    private static final List finalList = new ArrayList();
    // 初始化一个由 Collections 构建的list
    private static List collectionsList = new ArrayList();
    // 初始化一个由 guava 构建的list
    private static final List immutableList = ImmutableList.of(1, 2, 3);

    static {
        finalList.add(1);
        finalList.add(2);
        finalList.add(3);

        collectionsList.add(1);
        collectionsList.add(2);
        collectionsList.add(3);
        collectionsList = Collections.unmodifiableList(collectionsList);
    }

    public static void main(String[] args){

        log.info(finalList.toString());
        finalList.set(0, 4);
        log.info(finalList.toString());

        /*
        Exception in thread "main" java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableList.set(Collections.java:1311)
         */
        log.info(collectionsList.toString());
        collectionsList.set(0, 5);
        log.info(collectionsList.toString());

        /*
        Exception in thread "main" java.lang.UnsupportedOperationException
        at com.google.common.collect.ImmutableList.set(ImmutableList.java:512)
         */
        log.info(immutableList.toString());
        immutableList.set(0, 6);
        log.info(immutableList.toString());

    }
}

おすすめ

転載: www.cnblogs.com/loveSnowBaby/p/11599030.html