静态/类变量和GUI

时间:2015-09-13 03:31:26

标签: java oop user-interface static static-variables

我最近因学术目的被拉回到Java编程中,并且在我的第一个项目期间遇到了一些有趣的东西。

我必须为店面设计一个带有执行各种任务的按钮的GUI,我注意到我的变量发生了一些奇怪的事情。我的按钮通过其Actions更改的任何CLASS VARIABLES都不需要声明为静态,而我触及的主要方法的任何CLASS VARIABLES都必须声明为静态。

这是为什么?我的主要方法和ActionListener方法都处于相同的执行级别。 (他们都在同一个班级,没有一个人互相嵌入)

我希望这个问题不是太明显/愚蠢,我想尽可能多地重新学习Java。

1 个答案:

答案 0 :(得分:0)

您的main方法是静态的,这意味着它不在对象的实例上运行,该方法在类上调用,而没有实例化该类的对象。这对主方法有一定的意义,因为它是你的程序做的第一件事,所以无法实例化对象。

类本身存在静态方法和变量,而实例成员是(非静态)变量,它们是从类创建的每个对象的一部分。每个对象都有自己为该类声明的实例变量的副本,为每个对象赋予自己的状态。由于静态变量在类上,并且只有一个类的副本(它只由类加载器加载一次),因此每个静态变量只有一个。

我使用“class variable”来引用静态变量,使用“instance variable”来引用非静态变量。

在Swing GUI编程中,没有理由使用静态变量,我的建议是尽可能避免它们,因为具有全局可变状态是丑陋且难以调试。在Swing中,所有UI组件和侦听器都是对象,一旦主方法初始化并显示主jframe,通常不需要其他静态方法或变量。