我有一个界面,其功能如下所示:
public interface Myinterface {
Myobj1 getobjdata(int var1, int var2) throws IOException, SocketTimeoutException;
}
Myinterface mi = new Myinterface() {
@Override
public Myobj1 getobjdata(int x, int y) throws IOException, SocketTimeoutException {
return c.getobjdata(x, y); //c is another class
}
};
在Myinterface mi中,我想知道如何循环这个被覆盖的函数,这样我就能用mi对应的所有对象填充mi,其中x的范围是0到10,与y相同?就像我可以放置for循环一样,mi将填充100个对象数据。
我已经尝试了下面的内容,但它提示错误说"缺少退货声明,不知道为什么?
Myinterface mi = new Myinterface() {
@Override
public Myobj1 getobjdata(int x, int y) throws IOException, SocketTimeoutException {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
return c.getobjdata(x, y); //c is another class
}
}
}
};
更新
按照建议的答案我试了但是后来我添加了一个print语句,但它从未调用过,这意味着函数内的代码永远不会运行,不知道为什么?
Myinterface mi = new Myinterface() {
@Override
public Myobj1 getobjdata(int x, int y) throws IOException, SocketTimeoutException {
System.out.println("entered");
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
return c.getobjdata(x, y); //c is another class
}
}
return null;
}
};
答案 0 :(得分:0)
你需要尝试这个以避免“缺少退货声明”。
Myinterface mi = new Myinterface() {
@Override
public Myobj1 getobjdata(int x, int y) throws IOException, SocketTimeoutException {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
return getobjdata(i, j);
}
}
return null;
}
};
int dummy1 = 1, dummy2 =2;
mi.getobjdata(dummy1,dummy2); // now it will come into "getobjdata" function
正如我已经建议你的那样,你会得到堆栈溢出异常,因为它是一种循环方法调用。
答案 1 :(得分:0)
从我上面的代码中可以看出,您似乎根本没有在getobjdata()
字段上调用方法mi
。仅使用mi
声明类中的getobjdata()
字段是不够的。您还需要从其他地方实际调用它。您需要找到实际运行的代码,并确保从那里调用mi.getobjdata(x,y)
。