如何从另一个类

时间:2015-06-05 20:15:40

标签: java actionlistener

这将是一个令人尴尬的问题,但我是Java的新手。 我有一个使用此代码实现ActionListener的类:

public class Shop1 implements ActionListener{
    public void actionPerformed(ActionEvent event){
        int alis = 0;
        alis++;
        System.out.println(alis);
    }
}

每次按下按钮,都会显示1。我知道每次按下按钮都会将整数设置为0,并添加1,但我尝试将整数放在类之外,但这次它不会识别int 1}}。

1 个答案:

答案 0 :(得分:3)

您在此处看到的内容(变量始终为0)是由变量 scope 引起的。

在Java中,变量具有块范围,这意味着它们仅在创建它们的块(以及该块中的任何块)中有效。一个简单示例:

public void scope1(){
    if (something){
        int myint = 1;
        // possibly some other code here...
    }
    System.out.println(myint); // This will not compile, myint is not known in this scope!
    int myint = 1; // Declare myint in this scope
    System.out.println(myint); // now it works.
}

正如您在此处所看到的,第一个myint在if-blocks 范围中声明,导致它在if-block之外无效。 myint的第二个定义对整个方法块(在创建它的行之后)有效。

回到您的问题:您正在创建的变量具有actionPerformed() - 方法的块范围。因此,当该方法返回时,该变量将不再有效,并且它的值将消失。再次输入方法时,将在该范围内创建一个新变量。

要按照您想要的方式处理它,请移动变量" up"到比方法更高的范围。我建议在Shop1

中这样做
public class Shop1 implements ActionListener{

    private int alis;

    public void actionPerformed(ActionEvent event){
        alis++; // the variable is defined in the classes scope, so the values is "kept"
        System.out.println(alis);
    }

}

如果有任何不清楚的地方,请发表评论!