【问题标题】:Can't Instantiate Field (instance variable) in main() method. Why?? Java无法在 main() 方法中实例化字段(实例变量)。为什么??爪哇
【发布时间】:2013-06-15 09:32:27
【问题描述】:

谁能告诉我我在这里做错了什么?当我在 Eclipse 中有这段代码时,当我尝试在 main 方法中将 sheetName 设置为 "hi" 时,它告诉我不能“对非静态字段进行静态引用”。我在这里做错了什么?我知道它一定很简单,但是我到处搜索却无法弄清楚!

public class AutoExpire {

private String sheetName;
private FileInputStream inputStream;

/**
 * Instantiates the class.
 */
public AutoExpire() {
    // do nothing
}

/**
 * The main method from which the program is ran.
 * 
 * @param args
 *            No arguments.
 * @throws IOException
 *             If program fails to run.
 */
public static void main(String[] args) throws IOException {

    sheetName = "hi";

【问题讨论】:

  • static 表示它是类的一部分,而不是类实例(对象本身)的一部分。然而,诸如 sheetName 之类的非静态字段是该类实例的一部分。通常,您将使用具有字符串参数的构造函数创建类,并从构造函数分配字段。如果该类可以在没有sheetName 的情况下生存,您还可以创建一个 setter。但是无论你做什么,你都应该在创建类实例期间或之后设置该字段。

标签: java variables exception field main


【解决方案1】:

main 方法是静态的,因此main 方法中没有AutoExpire 的实例。创建一个实例,然后设置实例的字段。

public static void main(String[] args) throws IOException {
    AutoExpire ae = new AutoExpire();
    ae.sheetName = "hi";

【讨论】:

  • 非常感谢您的及时回复!你能看看下面的评论并可能在这个(你的)评论线程上回答吗?再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 2011-05-20
  • 2021-11-30
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多