ローカル環境
- 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());
}
}