summaryrefslogtreecommitdiffstats
path: root/libdvm/src/main/java/java/lang/reflect/Field.java
diff options
context:
space:
mode:
Diffstat (limited to 'libdvm/src/main/java/java/lang/reflect/Field.java')
-rw-r--r--libdvm/src/main/java/java/lang/reflect/Field.java931
1 files changed, 0 insertions, 931 deletions
diff --git a/libdvm/src/main/java/java/lang/reflect/Field.java b/libdvm/src/main/java/java/lang/reflect/Field.java
deleted file mode 100644
index fa8e5e7..0000000
--- a/libdvm/src/main/java/java/lang/reflect/Field.java
+++ /dev/null
@@ -1,931 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.lang.reflect;
-
-import java.lang.annotation.Annotation;
-import java.util.Comparator;
-import org.apache.harmony.kernel.vm.StringUtils;
-import libcore.reflect.GenericSignatureParser;
-import libcore.reflect.Types;
-
-/**
- * This class represents a field. Information about the field can be accessed,
- * and the field's value can be accessed dynamically.
- */
-public final class Field extends AccessibleObject implements Member {
-
- /**
- * Orders fields by their name and declaring class.
- *
- * @hide
- */
- public static final Comparator<Field> ORDER_BY_NAME_AND_DECLARING_CLASS
- = new Comparator<Field>() {
- @Override public int compare(Field a, Field b) {
- int comparison = a.name.compareTo(b.name);
- if (comparison != 0) {
- return comparison;
- }
-
- return a.getDeclaringClass().getName().compareTo(b.getDeclaringClass().getName());
- }
- };
-
- private Class<?> declaringClass;
-
- private Class<?> type;
-
- private Type genericType;
-
- private volatile boolean genericTypesAreInitialized = false;
-
- private String name;
-
- private int slot;
-
- private final int fieldDexIndex;
-
- private static final char TYPE_BOOLEAN = 'Z';
-
- private static final char TYPE_BYTE = 'B';
-
- private static final char TYPE_CHAR = 'C';
-
- private static final char TYPE_SHORT = 'S';
-
- private static final char TYPE_INTEGER = 'I';
-
- private static final char TYPE_FLOAT = 'F';
-
- private static final char TYPE_LONG = 'J';
-
- private static final char TYPE_DOUBLE = 'D';
-
- private Field(Class<?> declaringClass, Class<?> type, String name, int slot, int fieldDexIndex) {
- this.declaringClass = declaringClass;
- this.type = type;
- this.name = name;
- this.slot = slot;
- this.fieldDexIndex = fieldDexIndex;
- }
-
- /**
- * Returns the index of this field's ID in its dex file.
- * @hide
- */
- public int getDexFieldIndex() {
- return fieldDexIndex;
- }
-
- private synchronized void initGenericType() {
- if (!genericTypesAreInitialized) {
- String signatureAttribute = getSignatureAttribute();
- GenericSignatureParser parser = new GenericSignatureParser(
- declaringClass.getClassLoader());
- parser.parseForField(this.declaringClass, signatureAttribute);
- genericType = parser.fieldType;
- if (genericType == null) {
- genericType = getType();
- }
- genericTypesAreInitialized = true;
- }
- }
-
- /** {@inheritDoc} */
- @Override
- /* package */String getSignatureAttribute() {
- Object[] annotation = getSignatureAnnotation(declaringClass, slot);
-
- if (annotation == null) {
- return null;
- }
-
- return StringUtils.combineStrings(annotation);
- }
-
- /**
- * Get the Signature annotation for this field. Returns null if not found.
- */
- native private Object[] getSignatureAnnotation(Class declaringClass, int slot);
-
- /**
- * Indicates whether or not this field is synthetic.
- *
- * @return {@code true} if this field is synthetic, {@code false} otherwise
- */
- public boolean isSynthetic() {
- int flags = getFieldModifiers(declaringClass, slot);
- return (flags & Modifier.SYNTHETIC) != 0;
- }
-
- /**
- * Returns the string representation of this field, including the field's
- * generic type.
- *
- * @return the string representation of this field
- */
- public String toGenericString() {
- StringBuilder sb = new StringBuilder(80);
- // append modifiers if any
- int modifier = getModifiers();
- if (modifier != 0) {
- sb.append(Modifier.toString(modifier)).append(' ');
- }
- // append generic type
- appendGenericType(sb, getGenericType());
- sb.append(' ');
- // append full field name
- sb.append(getDeclaringClass().getName()).append('.').append(getName());
- return sb.toString();
- }
-
- /**
- * Indicates whether or not this field is an enumeration constant.
- *
- * @return {@code true} if this field is an enumeration constant, {@code
- * false} otherwise
- */
- public boolean isEnumConstant() {
- int flags = getFieldModifiers(declaringClass, slot);
- return (flags & Modifier.ENUM) != 0;
- }
-
- /**
- * Returns the generic type of this field.
- *
- * @return the generic type
- * @throws GenericSignatureFormatError
- * if the generic field signature is invalid
- * @throws TypeNotPresentException
- * if the generic type points to a missing type
- * @throws MalformedParameterizedTypeException
- * if the generic type points to a type that cannot be
- * instantiated for some reason
- */
- public Type getGenericType() {
- initGenericType();
- return Types.getType(genericType);
- }
-
- @Override public Annotation[] getDeclaredAnnotations() {
- return getDeclaredAnnotations(declaringClass, slot);
- }
- private static native Annotation[] getDeclaredAnnotations(Class declaringClass, int slot);
-
- @Override public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
- if (annotationType == null) {
- throw new NullPointerException("annotationType == null");
- }
- return getAnnotation(declaringClass, slot, annotationType);
- }
- private static native <A extends Annotation> A getAnnotation(
- Class<?> declaringClass, int slot, Class<A> annotationType);
-
- @Override public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
- if (annotationType == null) {
- throw new NullPointerException("annotationType == null");
- }
- return isAnnotationPresent(declaringClass, slot, annotationType);
- }
- private static native boolean isAnnotationPresent(
- Class<?> declaringClass, int slot, Class<? extends Annotation> annotationType);
-
- /**
- * Indicates whether or not the specified {@code object} is equal to this
- * field. To be equal, the specified object must be an instance of
- * {@code Field} with the same declaring class, type and name as this field.
- *
- * @param object
- * the object to compare
- * @return {@code true} if the specified object is equal to this method,
- * {@code false} otherwise
- * @see #hashCode
- */
- @Override
- public boolean equals(Object object) {
- return object instanceof Field && toString().equals(object.toString());
- }
-
- /**
- * Returns the value of the field in the specified object. This reproduces
- * the effect of {@code object.fieldName}
- *
- * <p>If the type of this field is a primitive type, the field value is
- * automatically boxed.
- *
- * <p>If this field is static, the object argument is ignored.
- * Otherwise, if the object is null, a NullPointerException is thrown. If
- * the object is not an instance of the declaring class of the method, an
- * IllegalArgumentException is thrown.
- *
- * <p>If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value, possibly boxed
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public Object get(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getField(object, declaringClass, type, slot, flag);
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code
- * boolean}. This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public boolean getBoolean(Object object) throws IllegalAccessException,
- IllegalArgumentException {
- return getZField(object, declaringClass, type, slot, flag, TYPE_BOOLEAN);
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code byte}.
- * This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public byte getByte(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getBField(object, declaringClass, type, slot, flag, TYPE_BYTE);
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code char}.
- * This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public char getChar(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getCField(object, declaringClass, type, slot, flag, TYPE_CHAR);
- }
-
- /**
- * Returns the class that declares this field.
- *
- * @return the declaring class
- */
- public Class<?> getDeclaringClass() {
- return declaringClass;
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code
- * double}. This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public double getDouble(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getDField(object, declaringClass, type, slot, flag, TYPE_DOUBLE);
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code float}
- * . This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public float getFloat(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getFField(object, declaringClass, type, slot, flag, TYPE_FLOAT);
- }
-
- /**
- * Returns the value of the field in the specified object as an {@code int}.
- * This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public int getInt(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getIField(object, declaringClass, type, slot, flag, TYPE_INTEGER);
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code long}.
- * This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public long getLong(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getJField(object, declaringClass, type, slot, flag, TYPE_LONG);
- }
-
- /**
- * Returns the modifiers for this field. The {@link Modifier} class should
- * be used to decode the result.
- *
- * @return the modifiers for this field
- * @see Modifier
- */
- public int getModifiers() {
- return getFieldModifiers(declaringClass, slot);
- }
-
- private native int getFieldModifiers(Class<?> declaringClass, int slot);
-
- /**
- * Returns the name of this field.
- *
- * @return the name of this field
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns the value of the field in the specified object as a {@code short}
- * . This reproduces the effect of {@code object.fieldName}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * @param object
- * the object to access
- * @return the field value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public short getShort(Object object) throws IllegalAccessException, IllegalArgumentException {
- return getSField(object, declaringClass, type, slot, flag, TYPE_SHORT);
- }
-
- /**
- * Returns the constructor's signature in non-printable form. This is called
- * (only) from IO native code and needed for deriving the serialVersionUID
- * of the class
- *
- * @return the constructor's signature.
- */
- @SuppressWarnings("unused")
- private String getSignature() {
- return getSignature(type);
- }
-
- /**
- * Return the {@link Class} associated with the type of this field.
- *
- * @return the type of this field
- */
- public Class<?> getType() {
- return type;
- }
-
- /**
- * Returns an integer hash code for this field. Objects which are equal
- * return the same value for this method.
- * <p>
- * The hash code for a Field is the exclusive-or combination of the hash
- * code of the field's name and the hash code of the name of its declaring
- * class.
- *
- * @return the hash code for this field
- * @see #equals
- */
- @Override
- public int hashCode() {
- return name.hashCode() ^ getDeclaringClass().getName().hashCode();
- }
-
- /**
- * Sets the value of the field in the specified object to the value. This
- * reproduces the effect of {@code object.fieldName = value}
- *
- * <p>If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- *
- * <p>If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- *
- * <p>If the field type is a primitive type, the value is automatically
- * unboxed. If the unboxing fails, an IllegalArgumentException is thrown. If
- * the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void set(Object object, Object value) throws IllegalAccessException,
- IllegalArgumentException {
- setField(object, declaringClass, type, slot, flag, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code
- * boolean} value. This reproduces the effect of {@code object.fieldName =
- * value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setBoolean(Object object, boolean value) throws IllegalAccessException,
- IllegalArgumentException {
- setZField(object, declaringClass, type, slot, flag, TYPE_BOOLEAN, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code byte}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setByte(Object object, byte value) throws IllegalAccessException,
- IllegalArgumentException {
- setBField(object, declaringClass, type, slot, flag, TYPE_BYTE, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code char}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setChar(Object object, char value) throws IllegalAccessException,
- IllegalArgumentException {
- setCField(object, declaringClass, type, slot, flag, TYPE_CHAR, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code double}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setDouble(Object object, double value) throws IllegalAccessException,
- IllegalArgumentException {
- setDField(object, declaringClass, type, slot, flag, TYPE_DOUBLE, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code float}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setFloat(Object object, float value) throws IllegalAccessException,
- IllegalArgumentException {
- setFField(object, declaringClass, type, slot, flag, TYPE_FLOAT, value);
- }
-
- /**
- * Set the value of the field in the specified object to the {@code int}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setInt(Object object, int value) throws IllegalAccessException,
- IllegalArgumentException {
- setIField(object, declaringClass, type, slot, flag, TYPE_INTEGER, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code long}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setLong(Object object, long value) throws IllegalAccessException,
- IllegalArgumentException {
- setJField(object, declaringClass, type, slot, flag, TYPE_LONG, value);
- }
-
- /**
- * Sets the value of the field in the specified object to the {@code short}
- * value. This reproduces the effect of {@code object.fieldName = value}
- * <p>
- * If this field is static, the object argument is ignored.
- * Otherwise, if the object is {@code null}, a NullPointerException is
- * thrown. If the object is not an instance of the declaring class of the
- * method, an IllegalArgumentException is thrown.
- * <p>
- * If this Field object is enforcing access control (see AccessibleObject)
- * and this field is not accessible from the current context, an
- * IllegalAccessException is thrown.
- * <p>
- * If the value cannot be converted to the field type via a widening
- * conversion, an IllegalArgumentException is thrown.
- *
- * @param object
- * the object to access
- * @param value
- * the new value
- * @throws NullPointerException
- * if the object is {@code null} and the field is non-static
- * @throws IllegalArgumentException
- * if the object is not compatible with the declaring class
- * @throws IllegalAccessException
- * if this field is not accessible
- */
- public void setShort(Object object, short value) throws IllegalAccessException,
- IllegalArgumentException {
- setSField(object, declaringClass, type, slot, flag, TYPE_SHORT, value);
- }
-
- /**
- * Returns a string containing a concise, human-readable description of this
- * field.
- * <p>
- * The format of the string is:
- * <ol>
- * <li>modifiers (if any)
- * <li>type
- * <li>declaring class name
- * <li>'.'
- * <li>field name
- * </ol>
- * <p>
- * For example: {@code public static java.io.InputStream
- * java.lang.System.in}
- *
- * @return a printable representation for this field
- */
- @Override
- public String toString() {
- StringBuilder result = new StringBuilder(Modifier.toString(getModifiers()));
- if (result.length() != 0) {
- result.append(' ');
- }
- appendTypeName(result, type);
- result.append(' ');
- appendTypeName(result, declaringClass);
- result.append('.');
- result.append(name);
- return result.toString();
- }
-
- private native Object getField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck) throws IllegalAccessException;
-
- private native double getDField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native int getIField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native long getJField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native boolean getZField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native float getFField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native char getCField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native short getSField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native byte getBField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor) throws IllegalAccessException;
-
- private native void setField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, Object value) throws IllegalAccessException;
-
- private native void setDField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, double v) throws IllegalAccessException;
-
- private native void setIField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, int i) throws IllegalAccessException;
-
- private native void setJField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, long j) throws IllegalAccessException;
-
- private native void setZField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, boolean z) throws IllegalAccessException;
-
- private native void setFField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, float f) throws IllegalAccessException;
-
- private native void setCField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, char c) throws IllegalAccessException;
-
- private native void setSField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, short s) throws IllegalAccessException;
-
- private native void setBField(Object o, Class<?> declaringClass, Class<?> type, int slot,
- boolean noAccessCheck, char descriptor, byte b) throws IllegalAccessException;
-
-}