内部 class 呼叫
Inner class calling
我 class
BubblesFrame
其中有 inner class
startnewGame
:
public class startNewGame implements ActionListener{
public void actionPerformed(ActionEvent event){
remove(panel);
panel = new BubbleMainPanel();
add(panel);
validate();
panel.repaint();
}
}
在 class
Menu
我想添加 event handler
startNewGame
ActionListener listener = new BubblesFrame.startNewGame();
newGame.addActionListener(listener);
但它 returns 出现以下错误:
No enclosing instance of type BubblesFrame is accessible. Must
qualify the allocation with an enclosing instance of type
BubblesFrame (e.g. x.new A() where x is an instance of BubblesFrame)
我的内心有什么问题class?
制作startNewGame
classstatic.
如果您的内部 class 不是静态的,请使用此方法:
ActionListener listener = new BubblesFrame().new startNewGame();
如果 startNewGame
class 是 static
你可以像以前一样做:
ActionListener listener = new BubblesFrame.startNewGame();
您确实实例化了您的外部 class,但您忘记实例化您的内部 class。
BubblesFrame f = new BubblesFrame(); //Instantiate outer class
ActionListener listener = f.new startNewGame(); //Instantiate inner class
我更好奇你为什么要暴露你的内在 class 而它是你的 BubblesFrame 的 listener
。您可能想再次查看您的设计模式。
通常是匿名 class 或私有 class。
我 class
BubblesFrame
其中有 inner class
startnewGame
:
public class startNewGame implements ActionListener{
public void actionPerformed(ActionEvent event){
remove(panel);
panel = new BubbleMainPanel();
add(panel);
validate();
panel.repaint();
}
}
在 class
Menu
我想添加 event handler
startNewGame
ActionListener listener = new BubblesFrame.startNewGame();
newGame.addActionListener(listener);
但它 returns 出现以下错误:
No enclosing instance of type BubblesFrame is accessible. Must qualify the allocation with an enclosing instance of type BubblesFrame (e.g. x.new A() where x is an instance of BubblesFrame)
我的内心有什么问题class?
制作startNewGame
classstatic.
如果您的内部 class 不是静态的,请使用此方法:
ActionListener listener = new BubblesFrame().new startNewGame();
如果 startNewGame
class 是 static
你可以像以前一样做:
ActionListener listener = new BubblesFrame.startNewGame();
您确实实例化了您的外部 class,但您忘记实例化您的内部 class。
BubblesFrame f = new BubblesFrame(); //Instantiate outer class
ActionListener listener = f.new startNewGame(); //Instantiate inner class
我更好奇你为什么要暴露你的内在 class 而它是你的 BubblesFrame 的 listener
。您可能想再次查看您的设计模式。
通常是匿名 class 或私有 class。