I need to modify a variable from an inner class. The compiler says I need to declare the variable static, but then I can't modify it. The code is something like this:
public class Outter{
private boolean b;
public Outter(){
b = false;
new Inner(b);
}
}
public class Inner{
public Inner(boolean b){
b = true;
}
}
Is there anything like the "extern" in C? Or any solution so I could modify the b variable? I've tried setting it to static and passing the whole Outter class as a parameter, but I keep having the same problem.
EDIT: Well the code is more like:
public class MainView{
private boolean view;
//JMenus,JMenuItems, JPanels.. declarations
private JFrame frame
MainView(){
view = true;
//initializations
create_listeners();
}
public void create_listeners(){
Menu.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event){
if(View){
new View2(frame);
View = false;
}
}
}
);
}
}
public class View2{
private JButton back = new JButton("Back");
public View2(JFrame frame){
//initialitzatons
create_listeners();
}
public void create_listeners(){
back.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event){
frame.remove(MainPanel);
View = true;// HERE, i want to modify the variable
}
}
);
}
}
The problem is how should I modify the variable "View" from the View2 class.
Sorry for bad tabulation, I did it quick and required code translation to be understood.
The syntax is as follows, you obtain the reference to the outer class using Outter.this
public class Outter{
private boolean b;
class Inner{
public Inner(boolean b){
Outter.this.b = true;
}
}
}
Edit: It looks to me that you are trying to modify b just by passing a reference. In java this is not possible. Variables are passed as arguments by copy of reference variable (a reference variable is something like a pointer) or, in case of primitives, by copy.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With