2 u013392625 u013392625 于 2014.08.25 20:51 提问

Java编程中A类如何调用B类中M方法里的C类的实例?

import java.awt.*;
import java.awt.event.*;

public class TestListener{

public static void main(String[] args){
Counter c1 = new Counter("Hello");
c1.CreatButton();
c1.add(c1.button);  ----------------------------(1)
c1.setLocation(100,100);
c1.setSize(100,100);
c1.setVisible(true);

}   
}

class Counter extends Frame{

public int count = 0;
     **final Button button = new Button("0");--------(2)
    Counter(String label){
    super(label);
    }
void CreatButton(){
 **//final Button button = new Button("0");----------(3)
button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent evt){
    count = Integer.parseInt(button.getLabel());
    button.setLabel(Integer.toString(++count));
    }   
  });
  }
}

像上述程序,目前是可以编译通过并运行的,如果我把(2)处的屏蔽掉,(3)处的用起来,那在(1)处应该如何写?
也就是题目中提到的如何调用方法中局部内部类的实例?请教各位~

3个回答

luluyasu
luluyasu   2014.08.25 22:10

不可以把,button不是局部变量嘛,怎么能够在外部调用呢

u013392625
u013392625 嗯,我也这样想,但是总觉的说服不了自己。
3 年多之前 回复
c920816698
c920816698   2014.08.26 11:38

button 放在方法里面,但是方法里面并没有返回值,如果一定要这样的话方法可以这样写
public Button createButton(){
...
return new Button("0");
}

hongjinusa
hongjinusa   2014.09.13 09:44

当然可以了
public Button createButton()

是return 一个指针( pointer ) 指着你的那个局部变量呢

1 处,c1.add(c1.createButton());

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!