나는 개인 추상 클래스를 리스너로 갖는다. 나는 그것에 만 접근 할 수있다. 해당 클래스를 어떻게 구현합니까?리플렉션을 통해 추상 클래스를 구현하는 방법
public class A {
private abstract class OnWorkListener {
public abstract void onWork(int param);
}
private OnWorkListener mListener;
public A(OnWorkListener listener) {
mListener = listener;
}
public void work() {
// some working
if(mListener != null) {
mListener.onWork(0);
}
}
}
public class B {
private static final String TAG = B.class.getSimpleName();
public B() {
//How to overwrite it?
WorkListener listener = new WorkListener() {
public void onWork(int what) {
Log.d(TAG, "onWork "+what);
}
};
A a = new A(listener);
a.work();
}
}
문제는 내가 추상 클래스의 인스턴스를 만들 수 없다는 것입니다. 먼저 구현해야합니다. 그러나 나는 답을 찾을 수 없다.
당신이하고있는 일은 나에게 좋을 것 같습니다. 그게 무슨 문제 야? –
클래스 A의 바깥 쪽에서는 'OnWorkListener'를 구현할 수 없습니다. –
인터페이스로 만들었다면'Proxy'를 사용할 수 있습니다. 그러나, 나는 일반적으로 전혀 반사를 사용하지 않는 것이 좋습니다. (또는 'int'는 숫자가 아닌 것). –