"test");// this should not allow here as Map i have declared as final. ko but Map hms = Collections.unmodifiable test");// this should not allow here as Map i have declared as final. [ Final does not imply unmodifiable If you want an unmodifiable map have a look at the Collections class, or alternatively wrap the map in
242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) APIs for Creating Unmodifiable , Set.copyOf,及Map.copyOf用来从已有集合创建ImmutableCollections List.copyOf源码 /** * Returns an unmodifiable List containing the elements of * the given Collection, in its iteration order. * * @implNote * If the given Collection is an unmodifiable List add no-arg orElseThrow() as preferred alternative to get() JDK-8177290 : add copy factory methods for unmodifiable
Immutable vs unmodifiable 来我们先看一个unmodifiable的例子: ? unmodifiable 你看到JDK提供的unmodifiable的缺陷了吗? 也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god! 当然,在不使用guava的情况下,我们是怎么避免上面的问题的呢? ? OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看: ?
List和Map上使用asUnmodifiable: import static groovy.test.GroovyAssert.shouldFail // Create List that is unmodifiable list[0] = 'Java' } // Create Map that is unmodifiable. def data = [name: 'Messages from mrhaki',
Immutable vs unmodifiable 来我们先看一个unmodifiable的例子: ? unmodifiable 你看到JDK提供的unmodifiable的缺陷了吗? 也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god! 当然,在不使用guava的情况下,我们是怎么避免上面的问题的呢? ? OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看: ?
Immutable vs unmodifiable 来我们先看一个unmodifiable的例子: ? unmodifiable 你看到JDK提供的unmodifiable的缺陷了吗? 也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god! 当然,在不使用guava的情况下,我们是怎么避免上面的问题的呢? ? OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看: ?
For * example, invoking the sort method on an unmodifiable list that is * already sorted may Wrappers /** * Returns an unmodifiable view of the specified collection. * @return an unmodifiable view of the specified sorted set. */ public static <T> SortedSet view is to be * returned * @return an unmodifiable view of the specified navigable view is to be * returned * @return an unmodifiable view of the specified navigable
Immutable vs unmodifiable 来我们先看一个unmodifiable的例子: ? 你看到JDK提供的unmodifiable的缺陷了吗? 也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god! 当然,在不使用guava的情况下,我们是怎么避免上面的问题的呢? ? OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看: ?
Immutable vs unmodifiable 来我们先看一个unmodifiable的例子: 你看到JDK提供的unmodifiable的缺陷了吗? 也即是说我们改变源集合,导致不可变视图(unmodifiable View)也会发生变化,oh my god! 当然,在不使用guava的情况下,我们是怎么避免上面的问题的呢? OK,unmodifiable看上去没有问题呢,但是guava依然觉得可以改进,于是提出了Immutable的概念,来看: 就一个copyOf,你不会忘记,如此cheap~ 用Google官方的说法是
link Realm} */ Realm getRealm(); /** * Return the list of {@link RequestFilter} * * @return Unmodifiable RequestFilter> getRequestFilters(); /** * Return the list of {@link ResponseFilter} * * @return Unmodifiable ResponseFilter> getResponseFilters(); /** * Return the list of {@link java.io.IOException} * * @return Unmodifiable
为此,我们可以使用Unmodifiable Map或Immutable Map。 在这个快速教程中,我们将看到它们之间的区别。然后,我们将介绍可以创建不可变Map的各种方法。 不可修改与不可变 Unmodifiable Map其实是一个可以修改的map的包装器,不允许直接修改它。
Map.unmodifiable() Map.unmodifiable() 创建一个不可修改的与其他 Map 对应 key-value 的 LinkedHashMap 对象; Map map = {' name': 'ACE', 'age': 18, 'isChecked': false}; Map map04 = Map.unmodifiable(map); // 异常 Unsupported operation : Cannot modify unmodifiable map // map04['isChecked'] = true; print('Map -> $map -> $map04'); I/flutter
When an immutable collection is required, the mutable collection must be wrapped into an unmodifiable But unmodifiable types are not public, they are private in Collections: types returned are generic ones
Map.identity() // 创建一个不可修改、基于哈希值的Map,包含other所有的项 Map.unmodifiable(Map other) 然后在实际项目中结合数据创建Map实例,创建一个空的 > item * item); print(dic3); // {1: 1, 2: 4, 3: 9} // 创建一个不可修改、基于哈希值的Map var dic6 = new Map.unmodifiable
Realm} */ Realm getRealm(); /** * Return the list of {@link RequestFilter} * * @return Unmodifiable RequestFilter> getRequestFilters(); /** * Return the list of {@link ResponseFilter} * * @return Unmodifiable getResponseFilters(); /** * Return the list of {@link java.io.IOException} * * @return Unmodifiable
it's not null assertNotNull(stats.failures()); 出于好奇,去看看NodeStatistics源码,构造方法如下,failures来自ApiTypeHelper.unmodifiable private NodeStatistics(Builder builder) { this.failures = ApiTypeHelper.unmodifiable(builder.failures this.failed = ApiTypeHelper.requireNonNull(builder.failed, this, "failed"); } 再去看ApiTypeHelper.unmodifiable ,如下,已确保了failures不为空 public static <T> List<T> unmodifiable(@Nullable List<T> list) { if (
* 初始化的时候将传进来的map赋值给一个final类型的map,然后将所有会修改的方法直接抛出UnsupportedOperationException异常 * Returns an unmodifiable of the map keys * @param <V> the class of the map values * @param m the map for which an unmodifiable * @return an unmodifiable view of the specified map. */ public static <K,V> Map<K,V> unmodifiableMap
启动时创建services列表,添加所有的gRPC的接口的定义,并设置为unmodifiable; 2. 请求时判断调用的接口是否在接口列表中,在列表中就调用对应的实现类。 能够对unmodifiable的接口做修改,加入创建的service接口 通过分析,在gRPC调用链中,我们可以看到一个参数里面的services,methods也正是我们注册的User服务。 图2 请求中的services对象 对于已经设置为unmodifiable的services对象,往里面直接put元素会抛出异常。
extends T> c) Returns an unmodifiable view of the specified collection. static <T> List<T> unmodifiableList extends T> list) Returns an unmodifiable view of the specified list. static <K,V> Map<K,V> unmodifiableMap extends V> m) Returns an unmodifiable view of the specified map. static <T> Set<T> unmodifiableSet(Set extends T> s) Returns an unmodifiable view of the specified set. static <K,V> SortedMap<K,V> unmodifiableSortedMap (SortedSet<T> s) Returns an unmodifiable view of the specified sorted set. 8 总结 List (有序<可用下标访问>、可重复
String> unmodifiableCryptoList = Collections.unmodifiableList(cryptoList); System.out.println("Unmodifiable // 尝试在可修改列表中再添加一种加密货币,并显示在不可修改列表中 cryptoList.add("BUSD"); System.out.println("New unmodifiable 将抛出一个未捕获的异常,println代码将无法被执行 unmodifiableCryptoList.add("XRP"); System.out.println("New unmodifiable // 尝试添加并显示一个新的加密货币到不可修改的列表中 immutableCryptoList.add("XRP"); System.out.println("New unmodifiable