org.owasp.shim.ForJava8 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java8-shim Show documentation
Show all versions of java8-shim Show documentation
Backports @since Java 9 collection factories like List.of onto
Java8 in a way that uses the real ones where available, falls back
to a conforming implementation on Java8 and JIT compiles well.
The newest version!
package org.owasp.shim;
import java.util.*;
class ForJava8 extends Java8Shim {
@Override public List listOf() {
return ImmutableListShim.empty();
}
@Override public List listOf(T a) {
return new ImmutableListShim<>(Collections.singletonList(a));
}
@Override public List listOf(T a, T b) {
ArrayList ls = new ArrayList<>(2);
ls.add(a);
ls.add(b);
return new ImmutableListShim<>(ls);
}
@Override public List listOf(T a, T b, T c) {
ArrayList ls = new ArrayList<>(3);
ls.add(a);
ls.add(b);
ls.add(c);
return new ImmutableListShim<>(ls);
}
@Override public List listOf(T... els) {
return new ImmutableListShim<>(Arrays.asList(els));
}
@SuppressWarnings("unchecked") // Immutable collections aren't invariant
@Override public List listCopyOf(Collection extends T> c) {
if (c instanceof ImmutableListShim) {
return (ImmutableListShim) c;
}
return new ImmutableListShim<>(new ArrayList<>(c));
}
@SuppressWarnings("unchecked") // Immutable collections aren't invariant
@Override public Map mapCopyOf(Map extends K, ? extends V> m) {
if (m instanceof ImmutableMapShim) {
return (ImmutableMapShim) m;
}
return new ImmutableMapShim<>(new LinkedHashMap<>(m));
}
@Override public Map.Entry mapEntry(K key, V value) {
return new ImmutableEntryShim<>(key, value);
}
@Override public Map mapOfEntries(Map.Entry... entries) {
Map m = new LinkedHashMap<>(entries.length);
for (Map.Entry e : entries) {
m.put(e.getKey(), e.getValue());
}
return new ImmutableMapShim<>(m);
}
@Override public Set setOf() {
return new ImmutableSetShim<>(Collections.emptySet());
}
@Override public Set setOf(T a) {
return new ImmutableSetShim<>(Collections.singleton(a));
}
@Override public Set setOf(T a, T b) {
LinkedHashSet ls = new LinkedHashSet<>(2);
ls.add(a);
ls.add(b);
return new ImmutableSetShim<>(ls);
}
@Override public Set setOf(T a, T b, T c) {
LinkedHashSet ls = new LinkedHashSet<>(3);
ls.add(a);
ls.add(b);
ls.add(c);
return new ImmutableSetShim<>(ls);
}
@Override public Set setOf(T... els) {
return new ImmutableSetShim<>(new LinkedHashSet<>(Arrays.asList(els)));
}
@SuppressWarnings("unchecked") // Immutable collections aren't invariant
@Override public Set setCopyOf(Collection extends T> c) {
if (c instanceof ImmutableSetShim) {
return (ImmutableSetShim) c;
}
return new ImmutableSetShim<>(new LinkedHashSet<>(c));
}
private static final class ImmutableListShim extends AbstractList {
private final List underlying;
ImmutableListShim(List underlying) {
this.underlying = underlying;
}
@Override
public T get(int index) {
return underlying.get(index);
}
@Override
public int size() {
return underlying.size();
}
private static final ImmutableListShim
© 2015 - 2025 Weber Informatics LLC | Privacy Policy