package de.take_weiland.mods.commons.internal.prop; import com.google.common.reflect.TypeToken; import java.lang.invoke.MethodHandle; import java.lang.reflect.Field; import static java.lang.invoke.MethodHandles.publicLookup; /** * @author diesieben07 */ final class FieldProperty<T> extends AbstractProperty<T, Field> { FieldProperty(Field member) { super(member); } @Override MethodHandle resolveGetter() throws IllegalAccessException { return publicLookup().unreflectGetter(member); } @Override MethodHandle resolveSetter() throws IllegalAccessException { return publicLookup().unreflectSetter(member); } @Override TypeToken<?> resolveType() { return TypeToken.of(member.getGenericType()); } @Override public String getName() { return member.getName(); } @SuppressWarnings("unchecked") @Override public Class<? super Object> getRawType() { return (Class<? super Object>) member.getType(); } }