gpt4 book ai didi

java - 在 Java 中使用 CallBack 方法时创建新对象?

转载 作者:行者123 更新时间:2023-12-01 12:18:32 25 4
gpt4 key购买 nike

我正在尝试使用 Java 中的回调功能。但我在实现它时遇到了 ArrayIndexOutOfBound 异常

CallBackInterface.java

interface CallBackInterface {

public void onCallBack(int position);
}

First.java

public class First implements CallBackInterface {
List<String> list = new ArrayList<String>();

public static void main(String args[]) {

new First().goGo();

}

public void goGo(){
list.add("one");
CallBackInterface obj = new First();
Second second = new Second(obj);
second.getPosition();
}
public void onCallBack(int position) {
list.remove(0);

}
}

Second.java

class Second {

CallBackInterface callback;

public Second(CallBackInterface callback) {
this.callback = callback;
}

public void getPosition() {
callback.onCallBack(0);
}
}

**这是堆栈跟踪:**

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.remove(ArrayList.java:474)
at org.help.adapters.First.onCallBack(First.java:28)
at org.help.adapters.Second.getPosition(First.java:43)
at org.help.adapters.First.goGo(First.java:25)
at org.help.adapters.First.main(First.java:17)

在方法 onCallBack() 中,我收到 ArrayIndexOutException,这是因为列表为空。那么在使用回调时对象是否会再次初始化?我需要做什么才能在回调方法中使用相同的列表?

最佳答案

创建新对象的不是回调,而是您。

CallBackInterface obj = new First();
Second second = new Second(obj);

而是传递这个对象

Second second = new Second(this);

因为 this 对象已将一个元素添加到其 List 中。

关于java - 在 Java 中使用 CallBack 方法时创建新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26848160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com