1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.list;
18
19 import java.util.Collection;
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.ListIterator;
23 import java.util.function.Predicate;
24
25 import org.apache.commons.collections4.Unmodifiable;
26 import org.apache.commons.collections4.iterators.UnmodifiableIterator;
27 import org.apache.commons.collections4.iterators.UnmodifiableListIterator;
28
29
30
31
32
33
34
35
36
37
38
39
40 public final class UnmodifiableList<E>
41 extends AbstractSerializableListDecorator<E>
42 implements Unmodifiable {
43
44
45 private static final long serialVersionUID = 6595182819922443652L;
46
47
48
49
50
51
52
53
54
55
56 public static <E> List<E> unmodifiableList(final List<? extends E> list) {
57 if (list instanceof Unmodifiable) {
58 @SuppressWarnings("unchecked")
59 final List<E> tmpList = (List<E>) list;
60 return tmpList;
61 }
62 return new UnmodifiableList<>(list);
63 }
64
65
66
67
68
69
70
71
72 @SuppressWarnings("unchecked")
73 public UnmodifiableList(final List<? extends E> list) {
74 super((List<E>) list);
75 }
76
77
78 @Override
79 public Iterator<E> iterator() {
80 return UnmodifiableIterator.unmodifiableIterator(decorated().iterator());
81 }
82
83 @Override
84 public boolean add(final Object object) {
85 throw new UnsupportedOperationException();
86 }
87
88 @Override
89 public boolean addAll(final Collection<? extends E> coll) {
90 throw new UnsupportedOperationException();
91 }
92
93 @Override
94 public void clear() {
95 throw new UnsupportedOperationException();
96 }
97
98 @Override
99 public boolean remove(final Object object) {
100 throw new UnsupportedOperationException();
101 }
102
103
104
105
106 @Override
107 public boolean removeIf(Predicate<? super E> filter) {
108 throw new UnsupportedOperationException();
109 }
110
111 @Override
112 public boolean removeAll(final Collection<?> coll) {
113 throw new UnsupportedOperationException();
114 }
115
116 @Override
117 public boolean retainAll(final Collection<?> coll) {
118 throw new UnsupportedOperationException();
119 }
120
121
122 @Override
123 public ListIterator<E> listIterator() {
124 return UnmodifiableListIterator.umodifiableListIterator(decorated().listIterator());
125 }
126
127 @Override
128 public ListIterator<E> listIterator(final int index) {
129 return UnmodifiableListIterator.umodifiableListIterator(decorated().listIterator(index));
130 }
131
132 @Override
133 public void add(final int index, final E object) {
134 throw new UnsupportedOperationException();
135 }
136
137 @Override
138 public boolean addAll(final int index, final Collection<? extends E> coll) {
139 throw new UnsupportedOperationException();
140 }
141
142 @Override
143 public E remove(final int index) {
144 throw new UnsupportedOperationException();
145 }
146
147 @Override
148 public E set(final int index, final E object) {
149 throw new UnsupportedOperationException();
150 }
151
152 @Override
153 public List<E> subList(final int fromIndex, final int toIndex) {
154 final List<E> sub = decorated().subList(fromIndex, toIndex);
155 return new UnmodifiableList<>(sub);
156 }
157
158 }