我定义了一个全局ArrayList itemList
,可以通过不同的类访问它。我已经通过actionPerformed
为其分配了值,并且可以在方法中访问它。但是,当我尝试访问方法之外的数据时,它变为null
。如何设置和访问方法外的数据?这是代码。
public void addMainBtn() {
for(int i=0;i < mainMenu.size();i++) {
mainPane.setLayout(new GridLayout(0,1));
JButton mainBtn = new JButton(mainMenu.get(i).item_name+" - "+mainMenu.get(i).item_price);
//mainAction mainBtnAct = new mainAction(mainMenu.get(i).item_name, mainMenu.get(i).item_price);
mainBtn.addActionListener(this);
mainPane.add(mainBtn);
}
}
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
String[] outputItem = str.split("-");
double outputPrice = Double.parseDouble(outputItem[1]);
storeArray.itemList.add(outputItem[0]);
storeArray.priceList.add(outputPrice);
}
public void printall() {
for (int i = 0; i < test.size(); i++) {
System.out.println(storeArray.itemList.get(i).toString());
}
}
答案 0 :(得分:1)
如果没有正确的同步,则不应使用来自两个不同线程的ArrayList。请改用ArrayBlockingQueue并定义将其存储为final的变量。