Я знаю, что этот вопрос может уже существовать, и это мой первый вопрос на сайте, поэтому, пожалуйста, несите меня. Мне все еще сложно понять это в моем случае.Как получить доступ к внешней переменной внутри внутренних вложенных методов?
Итак, вот что: у меня есть метод, который я вызываю, и у меня есть кнопка, которая изменит значение x. В зависимости от значения x, я хочу, чтобы программа что-то делала. Ниже программа не очень полная, но вы получите идею:
public class foo{
private void do(){
int x=0;
JButton changeValue= new JButton("Change the value of x");
changeValue.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
x=10; //change the x value when the button is clicked
//Here the user may also change the value of x
//by inputting some other number
}
});
//Something happens depending on x
//But nothing happens here because when I get the value of x,
//it reverts back to 0.
}
}
Однако, независимо от того, где я заявляю о своем х в делах(), я получаю сообщение об ошибке, говорящей мне, что внутренний класс не может получить доступ к переменному внешнему классу и что они должны быть объявлены окончательными. Но я не могу объявить его окончательным, потому что мне нужно изменить его позже. Я попытался поместить значения в новый класс. Я также попробовал объявить x как член foo(), но это приводит к тому, что x равен 0 или null, потому что по какой-то причине, когда он выходит из метода нажатия кнопки, для возврата к своему старому значению требуется значение x: 0 или null.
Что мне нужно: при нажатии кнопки изменяется значение x (Предполагая, что пользователь может изменить значение x на какой-то другой номер). Спасибо за любые ответы заранее.
Тот факт, что это ваш первый вопрос, не оправдывает вас тем, что вы не искали этот вопрос перед тем спрашивайте. – mjkaufer
Я уже искал это, я не могу получить прямой ответ для такого рода, и я попробовал ответы, упомянутые в других вопросах, хотя ни один из них не работает. – Hans