Hi all,

Newbie question.  I have defined an inter-type declaration, and I want to be
able to access via Field.get(this) a protected or public field's value in an
instance whose class is receiving an introduced method.  For example, if
there is a field in the target object called "name", I get a runtime error
of java.lang.IllegalAccessException when the code in an introduced method
attempts to access the value of the field via Field.get(this):

public aspect NameableItd {
        declare parents:  (@HasName *) implements Nameable;
        declare soft: IllegalAccessException : execution(* *(..)) &&
within(NameableItd);

        public String Nameable.getName() {
                Field field = this.getClass().getField("name"); // could be 
public,
protected, package or private
                if (field == null) {
                        return "";
                }
                return field.getString(this); // throws IllegalAccessException
        }
}

Any reason why?  Can an ITD not access field values in an instance of the
target type via reflection inside an introduced method?

I am not running with a security manager, to my knowledge.

TIA,
Matthew

-- 
View this message in context: 
http://www.nabble.com/How-does-an-ITD-access-a-field-in-the-target-instance-via-reflection--tp24803137p24803137.html
Sent from the AspectJ - users mailing list archive at Nabble.com.

_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to