我已经多次遇到这个问题,而且我从不费心去了解它为什么会发生,并了解“静态”的实际含义。我只是应用了Eclipse建议的更改并继续进行。
public class Member {
// Global Variables
int iNumVertices;
int iNumEdges;
public static void main(String[] args) {
// do stuff
iNumVertices = 0; // Cannot make a static reference to the non-static field iNumVertices
// do more stuff
} // main end
}
蚀告诉我要做static int iNumVertices;
,但我不确定为什么。那么“静态”到底是什么,它是如何使用的,使用“静态”的目的是什么,为什么它给了我这个问题?
这是您的示例:
public class Member {
// Global Variables
int iNumVertices;
int iNumEdges;
public static void main(String[] args) {
// do stuff
iNumVertices = 0; // Cannot make a static reference to the non-static field iNumVertices
}
}
该方法main
是与该类关联的静态方法。它没有与的实例相关联Member
,因此它无法访问与的实例相关联的变量Member
。解决方案 不是
使这些字段为静态。相反,您需要创建一个Member
使用new
关键字的实例。
这是修改后的版本:
public class Member {
// Fields
private int iNumVertices;
private int iNumEdges;
public Member(){
// init the class
}
public static void main(String[] args) {
Member member = new Member();
member.iNumVertices = 0;
// do more stuff
}
}
发现自己正在创建全局静态变量,这表明您应该仔细考虑如何设计某些事物。这并不 总是 错误的,但是它应该告诉您考虑自己在做什么。
问题内容: 我想制作一个可以在整个应用程序中访问的自定义对象的全局数组(AppDelegate,ViewController类,TableViewController类等)。我已经研究了一种解决方法,但没有找到答案。我曾尝试将数组设置为公共范围,但是收到了编译器警告,提示当我尝试在其他文件中访问该数组时,出现错误提示 我将如何使该数组可被应用程序中的所有文件全局访问,我将在哪里实例化该数组? 问题
嗨,伙计们,我想知道在声明变量时是如何工作的?您可以在下面代码的第3行中看到这一点。函数后的$output设置为函数,然后将$error变量设置为前一个命令的退出代码。在这种情况下怎么办/如何处理?
问题内容: 在其他任何地方都可以访问在静态块内声明的变量吗?他们是什么样的成员(即,他们也是静态成员吗?) 问题答案: 通常,程序员不需要在静态块内声明任何变量,通常这仅是为了确保初始化静态变量以供类的所有实例使用(取决于静态变量的范围)。 与方法和构造函数变量一样,在静态块内声明的变量将在该块内是局部的。 JDK文件
问题内容: 如何在JavaScript中声明全局变量? 问题答案: 如果必须在生产代码中生成全局变量(应避免使用),请 始终 明确 声明它们: 虽然可以通过省略来定义全局变量(假设没有同名的局部变量),但这样做会生成 隐式 全局,这是一件不好的事情,并且在 严格模式下 会产生错误。
我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。
问题内容: 我在一个组件(在应用程序中加载的第一个组件)中初始化了翻译对象。所有其他组件都需要相同的对象。我不想在每个组件中重新初始化它。怎么回事?使它可用于窗口范围并没有帮助,因为我需要在方法中使用它。 请提出针对这些问题的通用解决方案,而不是针对国际的解决方案。 问题答案: 为什么不尝试使用Context? 您可以在任何父组件中声明一个全局上下文变量,并且可以在组件树中通过来访问此变量。您只需