为什么我无法访问在构造函数 ( Java ) 中创建的 class 实例
Why can I not access an instance of class that is created in a constructor ( Java )
作为问题的序言,我是 Java 的新手。
我有 classes 调用,Game、Player 和 SystemIO。
我的 main() 在游戏 class 中。下面是它的代码
public static void main(String[] args){
SystemIO systemIO = new SystemIO();
}
调用 SystemIO 后,它的构造函数会使用行
创建一个 Player 实例
Player player = new Player("Bob");
其中 Player 构造函数将 1 个参数作为字符串。
在 SystemIO 的下方 class 我有一个方法可以从 "player" 实例访问信息。
player.getName();
当我尝试这样做时,控制台报告
SystemIO.java:339: 错误: 找不到符号
我已经确认我没有尝试使用大写 "Player." 来引用 class 名称
就像我说的那样,我对 Java 非常陌生,只是想全神贯注,我相信这是一个范围问题……但我不确定。
编辑以添加可重现的代码:
Game.java
package com.myapps;
import com.myapps.system.SystemIO;
public class Game{
public static void main(String[] args){
SystemIO systemIO = new SystemIO();
}
}
Player.java
package com.myapps.player;
public class Player{
String name;
public Player(String playerName){
name = playerName;
}
}
public String getName(){
return name;
}
SystemIO.java
package com.myapps.system;
import com.myapps.player.Player;
public class SystemIO{
public SystemIO(){
Player player = new Player("Bob");
readPlayerName();
}
public void readPlayerName(){
System.out.println(player.getName());
}
}
让玩家成为 class 变量。
将某人放入您的 class:
Player player;
并将构造函数的代码更改为:
player = new Player("Bob");
这称为范围错误。您希望 class 的所有方法都可以访问的变量应该在 class 中声明,而不是在一个特定的方法中声明(在您的情况下,您是在构造函数中完成的)
作为问题的序言,我是 Java 的新手。
我有 classes 调用,Game、Player 和 SystemIO。
我的 main() 在游戏 class 中。下面是它的代码
public static void main(String[] args){
SystemIO systemIO = new SystemIO();
}
调用 SystemIO 后,它的构造函数会使用行
Player player = new Player("Bob");
其中 Player 构造函数将 1 个参数作为字符串。
在 SystemIO 的下方 class 我有一个方法可以从 "player" 实例访问信息。
player.getName();
当我尝试这样做时,控制台报告
SystemIO.java:339: 错误: 找不到符号
我已经确认我没有尝试使用大写 "Player." 来引用 class 名称 就像我说的那样,我对 Java 非常陌生,只是想全神贯注,我相信这是一个范围问题……但我不确定。
编辑以添加可重现的代码:
Game.java
package com.myapps;
import com.myapps.system.SystemIO;
public class Game{
public static void main(String[] args){
SystemIO systemIO = new SystemIO();
}
}
Player.java
package com.myapps.player;
public class Player{
String name;
public Player(String playerName){
name = playerName;
}
}
public String getName(){
return name;
}
SystemIO.java
package com.myapps.system;
import com.myapps.player.Player;
public class SystemIO{
public SystemIO(){
Player player = new Player("Bob");
readPlayerName();
}
public void readPlayerName(){
System.out.println(player.getName());
}
}
让玩家成为 class 变量。
将某人放入您的 class:
Player player;
并将构造函数的代码更改为:
player = new Player("Bob");
这称为范围错误。您希望 class 的所有方法都可以访问的变量应该在 class 中声明,而不是在一个特定的方法中声明(在您的情况下,您是在构造函数中完成的)