Java—如何访问方法内部的ArrayList';s范围,从另一种方法?

Java—如何访问方法内部的ArrayList';s范围,从另一种方法?,java,scope,hashmap,Java,Scope,Hashmap,是的,我知道那是不可能的;但问题是我真的需要这么做。我将解释整个陷阱: public class MainMethods { ArrayList arrayOfValues; // << PROBLEM HashMap<String, Object> matrix = new HashMap<String, Object>(); void sendKeyToMatrix(String key) { arrayOfValues = new Arra

是的,我知道那是不可能的;但问题是我真的需要这么做。我将解释整个陷阱:

public class MainMethods {

ArrayList arrayOfValues; // << PROBLEM

HashMap<String, Object> matrix = new HashMap<String, Object>();

void sendKeyToMatrix(String key) {
    arrayOfValues = new ArrayList();
    matrix.put(key, arrayOfValues);
}

void attachValueToKey(Object object, Object value) {
    matrix.put((String) object, arrayOfValues.add(value));
}

void removeFromMatrix(String key) {
    matrix.remove(key);
}}
“attachValueToKey”的第二个参数接收textField给出的字符串,我遇到了一个大问题:

我不能将它添加到“sendKeyToMatrix”方法中的ArrayList中,这是显而易见的,但这是一个大问题,因为如果我在上面将变量声明为字段(这样我就可以在另一个作用域中访问它),我会得到错误的、深奥的错误结果,这对我来说是未知的

在一个简单的问题中继续这个问题:如何访问另一个方法中的变量

如果我在“attachValueToKey”中声明变量,每次按下按钮时,它都会在ArrayList中创建一个ArrayList


好吧,谢谢大家的帮助。也许一定有一种方法可以通过面向对象的魔术、实例等来召唤解决方案。

类似的东西应该可以回答您的问题,我想:

void attachValueToKey(Object object, Object value) {
    ArrayList a = matrix.get((String) object);
    a.add(value));
}

我想这应该能回答你的问题:

void attachValueToKey(Object object, Object value) {
    ArrayList a = matrix.get((String) object);
    a.add(value));
}

出于学习目的,我将在这里留下我在Lazarus的帮助下找到的解决方案:

public class MainMethods {

HashMap<String, Object> matrix = new HashMap<String, Object>();

void sendKeyToMatrix(String key) {
    ArrayList<Object> arrayOfValues = new ArrayList<Object>();
    matrix.put(key, arrayOfValues);
}

void attachValueToKey(Object object, String value) {
    ArrayList<String> arrayInMatrix = (ArrayList<String>) matrix.get(object);
    arrayInMatrix.add(value);
    matrix.put((String) object, arrayInMatrix);
}

void removeFromMatrix(String key) {
    matrix.remove(key);
} }

出于学习目的,我将在这里留下我在Lazarus的帮助下找到的解决方案:

public class MainMethods {

HashMap<String, Object> matrix = new HashMap<String, Object>();

void sendKeyToMatrix(String key) {
    ArrayList<Object> arrayOfValues = new ArrayList<Object>();
    matrix.put(key, arrayOfValues);
}

void attachValueToKey(Object object, String value) {
    ArrayList<String> arrayInMatrix = (ArrayList<String>) matrix.get(object);
    arrayInMatrix.add(value);
    matrix.put((String) object, arrayInMatrix);
}

void removeFromMatrix(String key) {
    matrix.remove(key);
} }

你的帖子太长,无法阅读,请详细说明问题。你的帖子太长,无法阅读,请详细说明问题。
btnInsertContent.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            mainMethods.attachValueToKey(mainList.getSelectedValue(), textContent.getText());
            mainCombo.addItem(textContent.getText());
            System.out.println(mainMethods.matrix);

        }
    });