【发布时间】:2013-02-18 23:33:53
【问题描述】:
我有一个私有抽象类作为监听器。我只能通过反射访问它。如何实现该类?
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。但是,我通常建议根本不使用反射。 (或ints 用于明确而非数字的事情。) -
我可以通过反射获得类WorkListener,但不能通过newInstance()创建对象。我想覆盖 onWork 方法
标签: java reflection