如何声明并添加到全局数组列表?

时间:2019-07-17 08:55:37

标签: java arraylist methods arguments

我有一个将整数值输入全局数组的项目。我正在使用ArrayList,似乎无法弄清楚如何将值添加到数组中,我不太确定如何将整数添加到数组中,因为它是全局的,而actionPerformed函数是本地的。另外,声明数组的位置是否正确?

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
    int intEnter = Integer.parseInt(this.txtEnter.getText());
}                                      


public static void main(String args[]) {
    ArrayList <Integer> intMarks = new ArrayList();
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MarksCalculator().setVisible(true);
        }
    });
}

4 个答案:

答案 0 :(得分:1)

应将数组声明为类的静态字段。

private static ArrayList <Integer> intMarks;

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
   int intEnter = Integer.parseInt(this.txtEnter.getText());
   intMarks.add(intEnter);
}                                      


public static void main(String args[]) {
    intMarks = new ArrayList();
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MarksCalculator().setVisible(true);
        }
    });
}

答案 1 :(得分:0)

如果arraylist是全局的,则可以在同一类的任何函数中的任何位置进行访问。同时可以添加mArrayListName.add(1)之类的值;即用于int类型的arraylist

答案 2 :(得分:0)

您可以使用singleton设计模式。

public class Singleton {

private ArrayList<Object> arrayList;

private static Singleton instance;

private Singleton(){
    arrayList = new ArrayList<Object>();
}

public static Singleton getInstance(){
    if (instance == null){
        instance = new Singleton();
    }
return instance;
}

public ArrayList<Object> getArrayList() {
   return arrayList;
}
}

您可以在任何课程中增加价值。

public class ExampleClass{
Singleton.getInstance().getArrayList().add(sampleObject);
}

注意:如果提供多线程处理,则可以使用double check locking.,因为ArrayList不是线程安全的。

答案 3 :(得分:0)

在您的代码中,数组列表intMarks不是全局的,它是main方法的局部变量。
要使其成为全局变量,您必须使其成为类的直接变量。

class ClassName{

    private static ArrayList <Integer> intMarks; 

    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
        int intEnter = Integer.parseInt(this.txtEnter.getText());
        intMarks.add(intEnter);
    }                                      


    public static void main(String args[]) {
        intMarks = new ArrayList<>();
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MarksCalculator().setVisible(true);
            }
        });
    }
}

此外,您必须将intMarks设为静态,才能在main方法中使用它