ImmutableClassToInstanceMap.java 2.49 KB
package com.google.common.collect;

import com.google.common.base.Preconditions;
import com.google.common.primitives.Primitives;
import java.io.Serializable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.annotation.Nullable;

public final class ImmutableClassToInstanceMap<B>
  extends ForwardingMap<Class<? extends B>, B>
  implements ClassToInstanceMap<B>, Serializable
{
  private final ImmutableMap<Class<? extends B>, B> a;
  
  private ImmutableClassToInstanceMap(ImmutableMap<Class<? extends B>, B> paramImmutableMap)
  {
    this.a = paramImmutableMap;
  }
  
  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> paramMap)
  {
    if ((paramMap instanceof ImmutableClassToInstanceMap)) {
      return (ImmutableClassToInstanceMap)paramMap;
    }
    return new Builder().putAll(paramMap).build();
  }
  
  protected final Map<Class<? extends B>, B> delegate()
  {
    return this.a;
  }
  
  @Nullable
  public final <T extends B> T getInstance(Class<T> paramClass)
  {
    return (T)this.a.get(Preconditions.checkNotNull(paramClass));
  }
  
  @Deprecated
  public final <T extends B> T putInstance(Class<T> paramClass, T paramT)
  {
    throw new UnsupportedOperationException();
  }
  
  public static final class Builder<B>
  {
    private final ImmutableMap.Builder<Class<? extends B>, B> a = ImmutableMap.builder();
    
    public final ImmutableClassToInstanceMap<B> build()
    {
      return new ImmutableClassToInstanceMap(this.a.build(), (byte)0);
    }
    
    public final <T extends B> Builder<B> put(Class<T> paramClass, T paramT)
    {
      this.a.put(paramClass, paramT);
      return this;
    }
    
    public final <T extends B> Builder<B> putAll(Map<? extends Class<? extends T>, ? extends T> paramMap)
    {
      paramMap = paramMap.entrySet().iterator();
      while (paramMap.hasNext())
      {
        Object localObject = (Map.Entry)paramMap.next();
        Class localClass = (Class)((Map.Entry)localObject).getKey();
        localObject = ((Map.Entry)localObject).getValue();
        this.a.put(localClass, Primitives.wrap(localClass).cast(localObject));
      }
      return this;
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/collect/ImmutableClassToInstanceMap.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */