はい、それは不可能です。しかし問題は、私が本当にそれをする必要があるということです。トラップ全体を説明します。
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);
}}
それが私のクラスで、それらが私のメソッドです。キーが文字列で、その値がオブジェクトである HashMap を作成しました。ものすごく単純。
本当の問題は、この「オブジェクト」を値として何をしようとしているのかということです。「sendKeyToMatrix」を呼び出すGUIとボタン、およびそれに値をアタッチする別のボタンがあります。両方ともtextFieldsからです。HashMaps の ".put()" メソッドにはオブジェクトが必要であり、最初にキーのみを作成する必要があるため、2 番目の引数は "null" または THE PROBLEM (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を持つキーが作成されます。このキーは JList に追加されます。次に、2 番目のボタンを呼び出すときに (JList で何が選択されているかを考慮して)、ArrayList に要素を追加します。
2 番目のボタンのコード:
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」の 2 番目の引数は、textField によって指定された文字列を受け取り、大きな問題に到達します。
「sendKeyToMatrix」メソッド内のArrayListに追加することはできませんが、これは明らかですが、変数をフィールドとして宣言すると(他のスコープでアクセスできるようにするため)、これは大きな問題です、 私にはわからない、間違った難解なミステリアスな結果が得られます。
簡単な質問でこれを再開します。他のメソッド内の変数にアクセスするにはどうすればよいですか?
「attachValueToKey」内で変数を宣言すると、ボタンが押されるたびに ArrayList 内に ArrayList が作成されます。
さて、私は助けてくれてありがとう。おそらく、インスタンスなどを使って、オブジェクト指向の魔法で解決策を呼び出す方法があるはずです。