[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] How does an ITD access a field in the target instance via reflection?
|
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.