无法在 main() 方法中实例化字段(实例变量)。为啥??爪哇
Posted
技术标签:
【中文标题】无法在 main() 方法中实例化字段(实例变量)。为啥??爪哇【英文标题】: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。但是无论你做什么,你都应该在创建类实例期间或之后设置该字段。
【参考方案1】:
main
方法是静态的,因此main
方法中没有AutoExpire
的实例。创建一个实例,然后设置实例的字段。
public static void main(String[] args) throws IOException
AutoExpire ae = new AutoExpire();
ae.sheetName = "hi";
【讨论】:
非常感谢您的及时回复!你能看看下面的评论并可能在这个(你的)评论线程上回答吗?再次感谢!以上是关于无法在 main() 方法中实例化字段(实例变量)。为啥??爪哇的主要内容,如果未能解决你的问题,请参考以下文章