我有一个作为侦听器的私有抽象类。我可以访问它只反映。我如何实现这个类?如何通过反射来实现抽象类
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();
}
}
问题是我无法创建抽象类的实例。我需要先实现它。但我找不到答案。
你在做什么对我来说似乎很好。有什么问题? – 2013-02-18 15:12:07
您将无法在A类以外的任何地方实现'OnWorkListener',因为它是私人的。 – 2013-02-18 15:15:13
如果你把它作为一个接口,你可以使用'Proxy'。但是,我通常建议不要使用反射。 (或者'int's表示不是数字的东西。) – 2013-02-18 15:15:31