在 main 之外的方法中调用 Java 对象

标签 java variables object syntax

我有一个简单的问题,我已经坚持了一段时间,但我找不到答案。基本上,我正在创建一个对象并尝试在不使用静态变量的情况下访问变量,因为有人告诉我这是错误的方法。这是问题的一些示例代码。我在第一个类中收到无法解析为变量的错误。我希望能够做的是在 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/

相关文章:

java - 在 JPA、关系数据库等中,元组是什么?

java - @JsonInclude(Include.NON_NULL) 没有按预期工作

jquery - 在变量上运行 jQuery,而不是在文档上运行

c - Lua 从 C 添加/更改全局变量

java - 如何将 boolean 参数传递给HQL new构造函数

php - 如何使用 Php 脚本读取 MySQL 用户名?

vba - 是否有将 Excel 文件格式/设置保存到对象的标准过程?

javascript - 迭代对象数组 - *ngFor - Angular 6

r - 尽管试图保留属性,但仍会丢失属性

Java - 如何找出哪个类文件有损坏的常量池?