我有一个简单的问题,我已经坚持了一段时间,但我找不到答案。基本上,我正在创建一个对象并尝试在不使用静态变量的情况下访问变量,因为有人告诉我这是错误的方法。这是问题的一些示例代码。我在第一个类中收到无法解析为变量的错误。我希望能够做的是在 main 之外的其他方法中访问 t.name
,但也在其他类中。以前为了解决这个问题,我会使用 Test2.name
并在 Test2
类中将变量设为静态,如果我错了,请纠正我,但我认为这是错误的方式去做吧。任何帮助将不胜感激 =)
public class Test {
public static void main(String[] args) {
Test2 t = new Test2("Joe");
}
public void displayName() {
System.out.println("Name2: " + t.name);
}
}
public class Test2 {
String name;
public Test2 (String nm) {
name = nm;
}
}
最佳答案
我看到其他人已经发布了代码片段,但他们实际上并没有发布其中任何一个有效的原因(在撰写本文时)。
你得到编译错误的原因是你的方法
public static void main(String[] args) {
Test2 t = new Test2("Joe");
}
变量t的作用域就是那个方法。您将 Test2 t
定义为仅在 main(String[] args)
方法中,因此您只能在其中使用变量 t
方法。但是,如果您要像这样使变量成为一个字段,并创建一个新的 Test 类实例,
public class Test {
Test2 t;
public static void main(String[] args) {
Test test = new Test();
test.t = new Test2("Joe");
test.displayName();
}
public void displayName() {
System.out.println("Name2: " + t.name);
}
}
那么您应该不会再遇到任何编译错误,因为您将变量 t 声明在类 Test
范围内。
关于在 main 之外的方法中调用 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11168088/