選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

AdviceOnPrivileged.java 640B

123456789101112131415161718192021222324252627282930313233
  1. import org.aspectj.testing.Tester;
  2. public class AdviceOnPrivileged {
  3. public static void main(String[] args) {
  4. C c1 = new C();
  5. c1.getX();
  6. Tester.check(!c1.gotXOutsideC, "normal field access");
  7. C c2 = new C();
  8. ExposeC.getX(c2);
  9. Tester.check(c2.gotXOutsideC, "privileged field access");
  10. }
  11. }
  12. class C {
  13. public boolean gotXOutsideC = false;
  14. private int x=1;
  15. public int getX() { return x; }
  16. }
  17. aspect WatchGets {
  18. before(C c): get(int C.x) && target(c) && !within(C) {
  19. System.out.println("got C.x");
  20. c.gotXOutsideC = true;
  21. }
  22. }
  23. privileged aspect ExposeC {
  24. public static int getX(C c) { return c.x; }
  25. }