创建对象Java时循环函数

时间:2017-11-10 21:34:26

标签: java interface

我有一个界面,其功能如下所示:

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;
       }
    };

2 个答案:

答案 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)