[英]New Object getting created while using CallBack methods in Java?
我試圖利用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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.