因此,我是一名学习程序员,两个月前在我的大学里开始学习Java。我真的很喜欢在业余时间编程,而我目前正在尝试制作游戏。目前只有一个我无法解决的问题。

我有一个名为Move的类,并在名为Start的类中声明:
Move move1 =新的Move();

现在,当我返回Move类时,我想访问此move1,但它不允许我进行。它说:类名无法解析。

澄清:

public class Move {
    private String s = null;
    public void setName(String s) {
       name = s;
    }
    public String getName() {
    return name;
    }
    public void setList() {
    System.out.println(move1.getName() + move2.getName()); // This won't work
    }
}


和开始课程:

public class Start {
   public static void main(String[] args) {
      Move move1 = new Move();
      Move move2 = new Move();
      move1.setName(kick);
      move2.setName(punch);
   }
}


如果有人可以帮助我,那就太好了!

-编辑

好!我得到了一些反应,但并没有真正得到所需的答案。我知道现在可以使用this代替对象名称,但是如果我想使用第二个对象怎么办?我更改了上面的代码。

最佳答案

您遇到的问题是名称set1和move2在setList方法中超出范围。它们在Start.main中定义为局部变量,因此它们仅在此处可见。

您可以通过多种方式解决此问题。最简单的方法是将setList方法移至Start。因为您是从main(一个静态方法)调用它的,所以setList也必须是静态的。

public class Start { public static void main(String[] args) { Move move1 = new Move(); Move move2 = new Move(); move1.setName(kick); move2.setName(punch); setList(move1, move2); } public static void setList(Move move1, Move move2) { System.out.println(move1.getName() + move2.getName()); }}

如果您认为setList应该在Move类中,则需要将第二步作为参数传递。

public class Move { ... public void setList(Move other) { System.out.println(this.getName() + other.getName()); }}

10-06 16:15