package jane.core; import java.lang.reflect.Field; /** * 各种基础类型的安全修改类 */ public abstract class SBase implements Runnable { protected final Bean<?> _bean; protected final Field _field; protected SBase(Bean<?> b, Field f) { _bean = b; _field = f; } public static final class SBoolean extends SBase { private final boolean _saved; public SBoolean(Bean<?> b, Field f, boolean v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setBoolean(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SChar extends SBase { private final char _saved; public SChar(Bean<?> b, Field f, char v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setChar(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SByte extends SBase { private final byte _saved; public SByte(Bean<?> b, Field f, byte v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setByte(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SShort extends SBase { private final short _saved; public SShort(Bean<?> b, Field f, short v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setShort(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SInteger extends SBase { private final int _saved; public SInteger(Bean<?> b, Field f, int v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setInt(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SLong extends SBase { private final long _saved; public SLong(Bean<?> b, Field f, long v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setLong(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SFloat extends SBase { private final float _saved; public SFloat(Bean<?> b, Field f, float v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setFloat(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SDouble extends SBase { private final double _saved; public SDouble(Bean<?> b, Field f, double v) { super(b, f); _saved = v; } @Override public void run() { try { _field.setDouble(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SOctets extends SBase { private final Octets _saved; public SOctets(Bean<?> b, Field f, Octets v, boolean clone) { super(b, f); _saved = (clone ? v.clone() : v); } @Override public void run() { try { _field.set(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } public static final class SObject extends SBase { private final Object _saved; public SObject(Bean<?> b, Field field, Object v) { super(b, field); _saved = v; } @Override public void run() { try { _field.set(_bean, _saved); } catch(Exception e) { throw new Error(e); } } } }