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