62,614
社区成员
发帖
与我相关
我的任务
分享
public class ClassC {
public void print()
{
System.out.println("this is C");
}
}
public class ClassB {
ClassC c;
}
public class ClassA extends ClassB{
public int a ;
public ClassA(int a)
{
this.a = a;
}
public static void main(String[] args) {
}
}
public class ClassA extends ClassB{
public int a ;
public ClassA(){}
public ClassA(int a){
this.a = a;
c = new ClassD(this);
}
public static void main(String[] args) {
ClassA obj = new ClassA( 5 );
obj.c.print();
}
}
class ClassC {
public void print(){
System.out.println("this is C");
}
}
class ClassB {
ClassC c;
}
class ClassD
{
ClassA a;
public ClassD(ClassA a){this.a=a;}
public void print(){
if ( a.a > 0) System.out.println("a是正数,a=:" + a.a);
else System.out.println("a不是正数,a=:" + a.a);
Super.print();
}
}
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
public class ClassA extends ClassB{
public int a ;
public ClassA(){}
public ClassA(int a){
this.a = a;
c = new ClassC();
}
public static void main(String[] args) {
ClassA obj = new ClassA( 5 );
obj.c.print();
}
}
class ClassC {
public void print(){
System.out.println("this is C");
}
}
class ClassB {
ClassC c;
}
@Aspect
class OwnerAwareAspect{
private ClassA objA;
@Pointcut("execution(* ClassC.print())")
public void classCPrint() {}
@Before("classCPrint()")
public void printA() {
if ( objA.a > 0) System.out.println("a是正数,值为:" + objA.a);
else System.out.println("a不是正数,值为:" + objA.a);
}
@Pointcut("initialization(ClassA.new(*)) && this (objA) " )
public void newClassA(ClassA objA) {}
@After("newClassA(objA)")
public void afterNewClassA(ClassA objA){
this.objA = objA;
}
}
public class ClassA extends ClassB{
public int a ;
public ClassA(int a){
this.a = a;
c = new ClassC();
this.c.setOwner(this);
}
public static void main(String[] args) {
ClassA obj = new ClassA( 5 );
obj.c.print();
}
}
class ClassC {
private ClassA owner;
public void setOwner (ClassA o){
owner = o;
}
public void print(){
System.out.println("this is C");
System.out.println("ClassA obj's attribute a is " + owner.a );
}
}
class ClassB {
ClassC c;
}