Java 如何在不创建新对象的情况下从另一个类访问变量
我过长的标题说明了一切。。。我希望能够在不创建新对象的情况下从另一个类访问变量 目前,我知道如何访问另一个类的变量的唯一方法是:Java 如何在不创建新对象的情况下从另一个类访问变量,java,class,variables,Java,Class,Variables,我过长的标题说明了一切。。。我希望能够在不创建新对象的情况下从另一个类访问变量 目前,我知道如何访问另一个类的变量的唯一方法是: Control control = new Control; int dirtCount = control.dirtCount; 然而,如果我想在我的污垢对象中访问这个变量,我必须为每个对象创建一个新的控件对象。这创造了一个无休止的循环 如何在不创建新对象的情况下访问变量 (如果您想查看我的代码的其余部分,我可以发布它。我认为这部分是最相关的:)一种方法是将该变
Control control = new Control;
int dirtCount = control.dirtCount;
然而,如果我想在我的污垢对象中访问这个变量,我必须为每个对象创建一个新的控件对象。这创造了一个无休止的循环
如何在不创建新对象的情况下访问变量
(如果您想查看我的代码的其余部分,我可以发布它。我认为这部分是最相关的:)一种方法是将该变量声明为
静态
,这意味着它是一个类变量(它不同于实例变量)。来自(我的):
它们与类相关联,而不是与任何对象相关联。类的每个实例都共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但是类变量也可以在不创建类实例的情况下进行操作
在控件中
类:
public class Control {
public static int dirCount;
// ...
}
您可以在不创建实例的情况下使用它:
int dirCount = Control.dirCount;
注意:
如果您希望该变量为private
,则可以定义static
getter方法:
public static int getDirCount() {
return dirCount;
}
您可以使用
int dirCount = Control.getDirCount();
是的,您必须读取一点静态变量。在java中,一个类可以有两种类型的成员变量 1) 实例变量-它们是使用该类的每个对象创建的,并且可以由该类的对象访问 2) 类变量-它们属于类意味着每个对象都可以共享相同的变量,并且可以通过类名进行访问
阅读类变量和实例变量。你听说过静态变量吗?虽然我认为@SotiriosDelimanolis的建议很好,但是staic变量/类变量呢。读,谢谢!我以前用过static关键字,但是我把“static”和“final”搞混了!我仍然有一个问题:我将变量设为static,并使getter与您的相同,但是当我试图从另一个类调用它时,我收到了以下错误消息:“无法从类型控件对非静态方法getDirtCount()进行静态引用”。我应该怎么做来纠正这个问题?再次感谢你!由于方法
getDirCount
将是静态的
,因此不能在内部使用任何非静态的
字段或方法。确保只在static
方法中使用static
字段。如果您的dirCount
和`getDirCount()`与我发布的内容相同,那么应该不会有问题。在声明dirCount
和getDirCount
时,请检查是否有static
关键字。这不是问题所在。。。我可以使方法getDirCount
很好,但问题是除了该类的构造函数之外,我不能在Dirt
类中将变量设置为getDirCount
。我把这个放进了构造器对不起,我按了回车键。无论如何,我把它放在构造函数中:int dirtNumber2=Control.getDirtCount();this.dirtNumber=dirtNumber2代码>,这很有效,但我需要在每一步更新变量。我有一个更新每个步骤的方法,但是我得到了我上次提到的错误,当我把构造函数中的东西放在那里时。我已经尝试过将类设置为静态,但没有成功,因为我不希望Dirt
类中的变量是静态的。我想我需要做的是把静态变量转换成非静态变量?再次感谢你!如果(对你的程序)有意义,你可以做任何事情静态。但这取决于你们班打算做什么。永远不会创建Dirt
的实例?