추상 클래스 콜백 사용

interface ClassCCallback {
    void setA(String a);
    void setB(String b);
    void setC(String c);
}
abstract class ClassCCallbackAdapter implements ClassCCallback {

    @Override
    public void setA(String a) { /* nothing */ }

    @Override
    public void setB(String b) { /* nothing */ }

    @Override
    public void setC(String c) {
        Log.d("Adapter", "SetC abstract!!");
    }

    // finish() intentionally left out
}
public class ClassC {
    private final WeakReference<ClassCCallbackAdapter> callback;

    public ClassC(ClassCCallbackAdapter callback) {
        this.callback = new WeakReference<ClassCCallbackAdapter>(callback);
        callMe();
    }

    public void callMe() {
        System.out.println("ClassC Call");
        if (callback != null) {
            String data = "orignal data";
            this.delegate.get().setA(data);
            this.delegate.get().setC(data);
        }
    }
}

 

MainActivity Callback 사용 

public class MainActivity extends AppCompatActivity {

    ClassCCallbackAdapter callback = new ClassCCallbackAdapter() {
            @Override
            public void setA(String a) {
                super.setA(a);
                Log.d("ClassC Callback", a);
            }

            @Override
            public void setB(String b) {
                super.setB(b);
            }
            
            //setC 함수는 abstract 클래스에서 처리
        };

        ClassC classC = new ClassC(callback);
}

+ Recent posts