CrackMe.apk
Download file
package com.google.common.base;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;
import javax.annotation.CheckForNull;
@ElementTypesAreNonnullByDefault
public final class Enums {
private static final Map<Class<? extends Enum<?>>, Map<String, WeakReference<? extends Enum<?>>>> enumConstantCache = new WeakHashMap();
private Enums() {
}
public static Field getField(Enum<?> enumR) {
try {
return enumR.getDeclaringClass().getDeclaredField(enumR.name());
} catch (NoSuchFieldException e) {
throw new AssertionError(e);
}
}
public static <T extends Enum<T>> Optional<T> getIfPresent(Class<T> cls, String str) {
Preconditions.checkNotNull(cls);
Preconditions.checkNotNull(str);
return Platform.getEnumIfPresent(cls, str);
}
private static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> populateCache(Class<T> cls) {
HashMap hashMap = new HashMap();
Iterator it = EnumSet.allOf(cls).iterator();
while (it.hasNext()) {
Enum enumR = (Enum) it.next();
hashMap.put(enumR.name(), new WeakReference(enumR));
}
enumConstantCache.put(cls, hashMap);
return hashMap;
}
static <T extends Enum<T>> Map<String, WeakReference<? extends Enum<?>>> getEnumConstants(Class<T> cls) {
Map<String, WeakReference<? extends Enum<?>>> map;
Map<Class<? extends Enum<?>>, Map<String, WeakReference<? extends Enum<?>>>> map2 = enumConstantCache;
synchronized (map2) {
map = map2.get(cls);
if (map == null) {
map = populateCache(cls);
}
}
return map;
}
public static <T extends Enum<T>> Converter<String, T> stringConverter(Class<T> cls) {
return new StringConverter(cls);
}
private static final class StringConverter<T extends Enum<T>> extends Converter<String, T> implements Serializable {
private static final long serialVersionUID = 0;
private final Class<T> enumClass;
StringConverter(Class<T> cls) {
this.enumClass = (Class) Preconditions.checkNotNull(cls);
}
/* access modifiers changed from: protected */
public T doForward(String str) {
return Enum.valueOf(this.enumClass, str);
}
/* access modifiers changed from: protected */
public String doBackward(T t) {
return t.name();
}
public boolean equals(@CheckForNull Object obj) {
if (obj instanceof StringConverter) {
return this.enumClass.equals(((StringConverter) obj).enumClass);
}
return false;
}
public int hashCode() {
return this.enumClass.hashCode();
}
public String toString() {
String name = this.enumClass.getName();
StringBuilder sb = new StringBuilder(String.valueOf(name).length() + 29);
sb.append("Enums.stringConverter(");
sb.append(name);
sb.append(".class)");
return sb.toString();
}
}
}
Download file