@Override public Integer convert(Enum<?> source) { return source.ordinal(); }
/** * 获取e的总频次 * * @param e * @return */ public int getTotalFrequency(E e) { return total[e.ordinal()]; }
public SerializableString serializedValueFor(Enum<?> key) { return _textual[key.ordinal()]; }
@Override public int ordinal(String tag) { return Enum.valueOf(enumType, tag).ordinal(); } }
private boolean isActuallyE(@Nullable Object o) { if (o instanceof Enum) { Enum<?> e = (Enum<?>) o; int index = e.ordinal(); return index < enumConstants.length && enumConstants[index] == e; } return false; }
@Override protected void saveValue(EnumItem<E> item, DataOutputStream out) throws IOException { out.writeInt(item.labelMap.size()); for (Map.Entry<E, Integer> entry : item.labelMap.entrySet()) { out.writeInt(entry.getKey().ordinal()); out.writeInt(entry.getValue()); } } }
public enum AwesomeEnum { Something, Other; private static final String name = AwesomeEnum.class.getName(); public void attachTo(Intent intent) { intent.putExtra(name, ordinal()); } public static AwesomeEnum detachFrom(Intent intent) { if(!intent.hasExtra(name)) throw new IllegalStateException(); return values()[intent.getIntExtra(name, -1)]; } }
private boolean isActuallyE(@NullableDecl Object o) { if (o instanceof Enum) { Enum<?> e = (Enum<?>) o; int index = e.ordinal(); return index < enumConstants.length && enumConstants[index] == e; } return false; }
public enum Direction { NORTH, EAST, SOUTH, WEST; private static final Direction[] cachedValues = values();// to avoid recreating array public Direction getOppositeDirection() { return cachedValues[(ordinal() + 2) % 4]; } }
private boolean isActuallyE(@NullableDecl Object o) { if (o instanceof Enum) { Enum<?> e = (Enum<?>) o; int index = e.ordinal(); return index < enumConstants.length && enumConstants[index] == e; } return false; }
@Override public int count(@Nullable Object element) { if (element == null || !isActuallyE(element)) { return 0; } Enum<?> e = (Enum<?>) element; return counts[e.ordinal()]; }
public static EnumValues constructFromToString(MapperConfig<?> config, Class<Enum<?>> enumClass) { Class<? extends Enum<?>> cls = ClassUtil.findEnumType(enumClass); Enum<?>[] values = cls.getEnumConstants(); if (values != null) { SerializableString[] textual = new SerializableString[values.length]; for (Enum<?> en : values) { textual[en.ordinal()] = config.compileString(en.toString()); } return new EnumValues(enumClass, textual); } throw new IllegalArgumentException("Cannot determine enum constants for Class "+enumClass.getName()); }
public static EnumValues constructFromToString(MapperConfig<?> config, Class<Enum<?>> enumClass) { Class<? extends Enum<?>> cls = ClassUtil.findEnumType(enumClass); Enum<?>[] values = cls.getEnumConstants(); if (values != null) { SerializableString[] textual = new SerializableString[values.length]; for (Enum<?> en : values) { textual[en.ordinal()] = config.compileString(en.toString()); } return new EnumValues(enumClass, textual); } throw new IllegalArgumentException("Cannot determine enum constants for Class "+enumClass.getName()); }
@Override public int count(@NullableDecl Object element) { if (element == null || !isActuallyE(element)) { return 0; } Enum<?> e = (Enum<?>) element; return counts[e.ordinal()]; }
@CanIgnoreReturnValue @Override public int setCount(E element, int count) { checkIsE(element); checkNonnegative(count, "count"); int index = element.ordinal(); int oldCount = counts[index]; counts[index] = count; size += count - oldCount; if (oldCount == 0 && count > 0) { distinctElements++; } else if (oldCount > 0 && count == 0) { distinctElements--; } return oldCount; }
@CanIgnoreReturnValue @Override public int add(E element, int occurrences) { checkIsE(element); checkNonnegative(occurrences, "occurrences"); if (occurrences == 0) { return count(element); } int index = element.ordinal(); int oldCount = counts[index]; long newCount = (long) oldCount + occurrences; checkArgument(newCount <= Integer.MAX_VALUE, "too many occurrences: %s", newCount); counts[index] = (int) newCount; if (oldCount == 0) { distinctElements++; } size += occurrences; return oldCount; }
@Override public void remove() { checkRemove(toRemove >= 0); if (counts[toRemove] > 0) { distinctElements--; size -= counts[toRemove]; counts[toRemove] = 0; } toRemove = -1; } }
@Override public void remove() { checkRemove(toRemove >= 0); if (counts[toRemove] > 0) { distinctElements--; size -= counts[toRemove]; counts[toRemove] = 0; } toRemove = -1; } }
@Override public void remove() { checkRemove(toRemove >= 0); if (counts[toRemove] > 0) { distinctElements--; size -= counts[toRemove]; counts[toRemove] = 0; } toRemove = -1; } }