Android(Java)
[Java] abstract Callback (추상클래스 콜백)
삽질중
2024. 1. 5. 13:10
추상 클래스 콜백 사용
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);
}