package tk.amberide.ide.data.state.node; import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class FieldState<T> implements IState<T> { protected Field field; public FieldState(Field field) { if (Modifier.isStatic(field.getModifiers())) { this.field = field; } else { throw new IllegalArgumentException("field must be static"); } } public Field getField() { return field; } public T get() { field.setAccessible(true); try { return (T) field.get(null); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } @Override public String getName() { return field.getDeclaringClass().getName() + "/" + field.getName(); } @Override public String toString() { return "FieldState{" + getName() + "}"; } }