我在夜间编程时遇到了这个问题。
//Reader class isn't java.io but it's from third party library
public class ACR122U extends Reader {
// This method is called from outside
// This method overrides method of the Reader class
@Override
public void open(UsbDevice device) {
new OpenTask().execute(device);
}
private class OpenTask extends AsyncTask<UsbDevice, Void, Exception> {
@Override
protected Exception doInBackground(UsbDevice... params) {
Exception result = null;
try {
// There the problem (recursion) happens
// I don't want to call ACR122U.open() but Reader.open()
// I cannot call super.open() /super of OpenTask class is AsyncTask/
open(params[0]);
} catch (Exception e) {
result = e;
}
return result;
}
}
}
我想知道是否可以在不更改open()方法名称的情况下解决问题。 有什么想法吗?
PS:新手在这里。
答案 0 :(得分:0)
您要执行的操作的语法是:
ACR122U.super.open(params[0]);
但是,如果您正在谈论java.io.Reader
,那么这不会起作用,因为Reader
类没有定义open()
方法;当然不是open(UsbDevice)
方法。