Java - 如何从另一个方法访问方法范围内的 ArrayList?

标签 java scope hashmap

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

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);
}}

那是我的类(class),这些是我的方法。我创建了一个 HashMap,键是字符串,值是对象;非常简单。

真正的问题是我打算用这个“对象”作为一个值来做什么。我有一个 GUI 和一个调用“sendKeyToMatrix”的按钮,以及另一个为其附加值的按钮,两者都来自文本字段。由于 HashMap 的“.put()”方法需要一个对象,并且我必须首先仅创建键,因此第二个参数是“null”或问题(ArrayList)。

完美的解决方案:

public class MainMethods {

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

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

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

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

当我使用按钮调用“sendKeytoMatrix”时,它会创建一个以空 ArrayList 作为其值的键。该 key 已添加到我的 JList 中。然后,当我调用第二个按钮(考虑 JList 中选择的内容)时,我向 ArrayList 添加一个元素:

第二个按钮的代码:

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);

        }
    });

“attachValueToKey”的第二个参数接收文本字段给出的字符串,我遇到了大问题:

我无法将它添加到“sendKeyToMatrix”方法内的ArrayList中,这是显而易见的,但这是一个大问题,因为如果我将变量声明为那里的字段(这样我就可以在其他范围),我得到了我不知道的错误且深奥的神秘结果。

用一个简单的问题来回答这个问题:如何访问另一个方法中的变量?

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

好的,谢谢大家的帮助。也许必须有一种方法通过面向对象的魔法来召唤解决方案,例如实例等。

最佳答案

我想这样的事情应该可以回答你的问题:

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

关于Java - 如何从另一个方法访问方法范围内的 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377434/

相关文章:

java - OpenGL:无论相机方向如何,如何使文本以相同像素显示?

java - 检测图像中的矩形会产生不需要的结果(opencv,java)

javascript - Javascript 中异步任务的 for..in 循环

java - 基于 Value 然后 Key 对 HashMap 进行排序?

java - 如何初始化数组的元素(1 到 10),然后在打印元素的方法中使用该构造函数?

C++ 运算符重载的 Java 等价物

javascript - 如何获取进程nodejs的局部范围内的所有变量

ruby-on-rails - 排序用户对象

Java '.class' 预期错误

基于 UML 类图的 Java Bank; HashMap 存储的问题