@Override public Object apply(AnnotationValueInfo input) { return input.value(); }
@Override public String toString() { return name() + "=" + value(); }
public <T> Optional<T> getIfPresent(Map<String, AnnotationValueInfo> nameMap, String name) { if (!nameMap.containsKey(name)) { return Optional.absent(); } AnnotationValueInfo value = nameMap.get(name); AnnotationValueKind kind = value.kind(); if (!kind.equals(this)) { throw new ClassCastException(kind + " cannot be cast to " + this); } @SuppressWarnings("unchecked") T object = (T) value.value(); return Optional.of(object); }
public char charValue() { Preconditions.checkArgument(AnnotationValueKind.PRIMITIVE_CHAR.equals(kind())); return ((Character) value()).charValue(); }
public boolean booleanValue() { Preconditions.checkArgument(AnnotationValueKind.PRIMITIVE_BOOLEAN.equals(kind())); return ((Boolean) value()).booleanValue(); }
public int intValue() { Preconditions.checkArgument(AnnotationValueKind.PRIMITIVE_INT.equals(kind())); return ((Integer) value()).intValue(); }
public SimpleTypeInfo simpleTypeInfoValue() { Preconditions.checkArgument(AnnotationValueKind.TYPE.equals(kind())); return (SimpleTypeInfo) value(); }
public String getStringValue() { Preconditions.checkArgument(AnnotationValueKind.STRING.equals(kind())); return (String) value(); }
@Override public final int hashCode() { return Objects.hashCode(name(), kind(), value()); }
@Override public final boolean equals(final Object obj) { if (obj == this) { return true; } if (obj instanceof AnnotationValueInfo) { final AnnotationValueInfo that = (AnnotationValueInfo) obj; return name().equals(that.name()) && kind().equals(that.kind()) && value().equals(that.value()); } else { return false; } }
public <E extends Enum<E>> E getEnumValue(Class<E> enumType) { Preconditions.checkArgument(AnnotationValueKind.ENUM.equals(kind())); EnumConstantInfo value = (EnumConstantInfo) value(); return value.getEnumValue(enumType); }
@Override public boolean isEqual(AnnotationValueInfo o) { return Testables.isEqualHelper() .equal(name, o.name()) .equal(kind, o.kind()) .equal(value, o.value()) .result(); }