|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
package sun.reflect; |
|
|
|
import java.lang.reflect.Field; |
|
|
|
class UnsafeIntegerFieldAccessorImpl extends UnsafeFieldAccessorImpl { |
|
UnsafeIntegerFieldAccessorImpl(Field field) { |
|
super(field); |
|
} |
|
|
|
public Object get(Object obj) throws IllegalArgumentException { |
|
return new Integer(getInt(obj)); |
|
} |
|
|
|
public boolean getBoolean(Object obj) throws IllegalArgumentException { |
|
throw newGetBooleanIllegalArgumentException(); |
|
} |
|
|
|
public byte getByte(Object obj) throws IllegalArgumentException { |
|
throw newGetByteIllegalArgumentException(); |
|
} |
|
|
|
public char getChar(Object obj) throws IllegalArgumentException { |
|
throw newGetCharIllegalArgumentException(); |
|
} |
|
|
|
public short getShort(Object obj) throws IllegalArgumentException { |
|
throw newGetShortIllegalArgumentException(); |
|
} |
|
|
|
public int getInt(Object obj) throws IllegalArgumentException { |
|
ensureObj(obj); |
|
return unsafe.getInt(obj, fieldOffset); |
|
} |
|
|
|
public long getLong(Object obj) throws IllegalArgumentException { |
|
return getInt(obj); |
|
} |
|
|
|
public float getFloat(Object obj) throws IllegalArgumentException { |
|
return getInt(obj); |
|
} |
|
|
|
public double getDouble(Object obj) throws IllegalArgumentException { |
|
return getInt(obj); |
|
} |
|
|
|
public void set(Object obj, Object value) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
ensureObj(obj); |
|
if (isFinal) { |
|
throwFinalFieldIllegalAccessException(value); |
|
} |
|
if (value == null) { |
|
throwSetIllegalArgumentException(value); |
|
} |
|
if (value instanceof Byte) { |
|
unsafe.putInt(obj, fieldOffset, ((Byte) value).byteValue()); |
|
return; |
|
} |
|
if (value instanceof Short) { |
|
unsafe.putInt(obj, fieldOffset, ((Short) value).shortValue()); |
|
return; |
|
} |
|
if (value instanceof Character) { |
|
unsafe.putInt(obj, fieldOffset, ((Character) value).charValue()); |
|
return; |
|
} |
|
if (value instanceof Integer) { |
|
unsafe.putInt(obj, fieldOffset, ((Integer) value).intValue()); |
|
return; |
|
} |
|
throwSetIllegalArgumentException(value); |
|
} |
|
|
|
public void setBoolean(Object obj, boolean z) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
throwSetIllegalArgumentException(z); |
|
} |
|
|
|
public void setByte(Object obj, byte b) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
setInt(obj, b); |
|
} |
|
|
|
public void setChar(Object obj, char c) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
setInt(obj, c); |
|
} |
|
|
|
public void setShort(Object obj, short s) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
setInt(obj, s); |
|
} |
|
|
|
public void setInt(Object obj, int i) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
ensureObj(obj); |
|
if (isFinal) { |
|
throwFinalFieldIllegalAccessException(i); |
|
} |
|
unsafe.putInt(obj, fieldOffset, i); |
|
} |
|
|
|
public void setLong(Object obj, long l) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
throwSetIllegalArgumentException(l); |
|
} |
|
|
|
public void setFloat(Object obj, float f) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
throwSetIllegalArgumentException(f); |
|
} |
|
|
|
public void setDouble(Object obj, double d) |
|
throws IllegalArgumentException, IllegalAccessException |
|
{ |
|
throwSetIllegalArgumentException(d); |
|
} |
|
} |