让java回调课程的最佳做法是什么?

DNB*_*ims 0 java methods

这是问题所在:

我有一个叫做的类MyClass,它是一个普通的类,有一个变量i,并且MyOtherClass里面会有一些逻辑来修改MyClass'si值,但是我不想传递iMyOtherClass,我希望它们调用addOne,minusOne方法.如何修改MyOtherClass这样做?我可以修改构造函数MyOtherClass来满足这个要求.谢谢.

 public class MyClass{

   int i;

   public void myMethod(){

     //I would like to myOtherClass a, b can call back MyClass's addOne, and minusOne
     MyOtherClass a = new MyOtherClass(); 
     MyOtherClass b = new MyOtherClass();

     a.runLogic(); 
     b.runLogin();   
   }

   public void addOne(){
     i++;   
   }

   public void minusOne(){
     i--;   
   }  

   pubic void printI(){
    System.out.print(i);
   }
}
Run Code Online (Sandbox Code Playgroud)

使用的代码 MyClass

MyClass myClass = new MyClass(); 

myClass.myMethod(); 

myClass.printI();
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

只需将this参数作为参数传递给其他类构造函数或runLogic方法:

public class MyClass {
    private int i;

    pulic void addOne() {
        i++;
    }

    public void myMethod() {
        MyOtherClass c = new MyOtherClass(this);
        c.runLogic();
    }   
}

public class MyOtherClass {
    private MyClass myClass;

    public MyOtherClass(MyClass myClass) {
        this.myClass = myClass;
    }

    public void runLogic() {
        myClass.addOne();
    }
}
Run Code Online (Sandbox Code Playgroud)