我无法访问内部类中外部类的实例变量。它是一个简单的swing应用程序,我使用JRuby创建:
class MainApp
def initialize
...
@textArea = Swing::JTextArea.new
@button = Swing::JButton.new
@button.addActionListener(ButtonListener.new)
...
end
class ButtonListener
def actionPerformed(e)
puts @textArea.getText #cant do this
end
end
end
我能想到的唯一解决方法是:
...
@button.addActionListener(ButtonListener.new(@textArea))
...
class ButtonListener
def initialize(control)
@swingcontrol = control
end
end
然后在'actionPerformed'方法中使用@textArea的@swingcontrol位置。
答案 0 :(得分:0)
我想直接无法从内部类访问外部类成员而不诉诸黑客是不可能的。因为ButtonListener类中的@textArea与MainApp中的@textArea不同。
(我是红宝石的新手,所以我可能错了。所以,请随意纠正我)
答案 1 :(得分:0)
Ruby的方法是使用块而不是嵌套类。
class MainApp
def initialize
...
@textArea = Swing::JTextArea.new
@button = Swing::JButton.new
@button.addActionListener do |e|
puts @textArea.getText
end
...
end
end