84 lines
3.0 KiB
Java
84 lines
3.0 KiB
Java
package com.google.common.collect;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.collect.ImmutableMap;
|
|
import com.google.common.primitives.Primitives;
|
|
import java.io.Serializable;
|
|
import java.util.Map;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class ImmutableClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B> implements ClassToInstanceMap<B>, Serializable {
|
|
private static final ImmutableClassToInstanceMap<Object> EMPTY = new ImmutableClassToInstanceMap<>(ImmutableMap.of());
|
|
private final ImmutableMap<Class<? extends B>, B> delegate;
|
|
|
|
public static <B> Builder<B> builder() {
|
|
return new Builder<>();
|
|
}
|
|
|
|
public static <B, S extends B> ImmutableClassToInstanceMap<B> copyOf(Map<? extends Class<? extends S>, ? extends S> map) {
|
|
if (map instanceof ImmutableClassToInstanceMap) {
|
|
return (ImmutableClassToInstanceMap) map;
|
|
}
|
|
Builder builder = new Builder();
|
|
builder.a(map);
|
|
return builder.a();
|
|
}
|
|
|
|
public static <B> ImmutableClassToInstanceMap<B> of() {
|
|
return (ImmutableClassToInstanceMap<B>) EMPTY;
|
|
}
|
|
|
|
public <T extends B> T getInstance(Class<T> cls) {
|
|
ImmutableMap<Class<? extends B>, B> immutableMap = this.delegate;
|
|
Preconditions.a(cls);
|
|
return immutableMap.get(cls);
|
|
}
|
|
|
|
@Deprecated
|
|
public <T extends B> T putInstance(Class<T> cls, T t) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
Object readResolve() {
|
|
return isEmpty() ? of() : this;
|
|
}
|
|
|
|
private ImmutableClassToInstanceMap(ImmutableMap<Class<? extends B>, B> immutableMap) {
|
|
this.delegate = immutableMap;
|
|
}
|
|
|
|
public static <B, T extends B> ImmutableClassToInstanceMap<B> of(Class<T> cls, T t) {
|
|
return new ImmutableClassToInstanceMap<>(ImmutableMap.of(cls, t));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
@Override // com.google.common.collect.ForwardingMap, com.google.common.collect.ForwardingObject
|
|
public Map<Class<? extends B>, B> delegate() {
|
|
return this.delegate;
|
|
}
|
|
|
|
public static final class Builder<B> {
|
|
private final ImmutableMap.Builder<Class<? extends B>, B> a = ImmutableMap.builder();
|
|
|
|
public <T extends B> Builder<B> a(Map<? extends Class<? extends T>, ? extends T> map) {
|
|
for (Map.Entry<? extends Class<? extends T>, ? extends T> entry : map.entrySet()) {
|
|
Class<? extends T> key = entry.getKey();
|
|
this.a.a(key, a(key, entry.getValue()));
|
|
}
|
|
return this;
|
|
}
|
|
|
|
private static <B, T extends B> T a(Class<T> cls, B b) {
|
|
return (T) Primitives.b(cls).cast(b);
|
|
}
|
|
|
|
public ImmutableClassToInstanceMap<B> a() {
|
|
ImmutableMap<Class<? extends B>, B> a = this.a.a();
|
|
if (a.isEmpty()) {
|
|
return ImmutableClassToInstanceMap.of();
|
|
}
|
|
return new ImmutableClassToInstanceMap<>(a);
|
|
}
|
|
}
|
|
}
|