Abi*_*Abi 248
要定义全局变量,您可以使用静态关键字
public class Example {
public static int a;
public static int b;
}
Run Code Online (Sandbox Code Playgroud)
现在你可以通过电话从任何地方访问a和b
Example.a;
Example.b;
Run Code Online (Sandbox Code Playgroud)
Mih*_*der 54
你没有.这是设计的.即使你可以,也不应该这样做.
话虽如此,您可以在名为Globals的类中创建一组公共静态成员.
public class Globals {
public static int globalInt = 0;
///
}
Run Code Online (Sandbox Code Playgroud)
但你真的不应该:).说真的..不要这样做.
Eva*_*que 39
另一种方法是创建一个这样的接口:
public interface GlobalConstants
{
String name = "Chilly Billy";
String address = "10 Chicken head Lane";
}
Run Code Online (Sandbox Code Playgroud)
任何需要使用它们的类都必须实现接口:
public class GlobalImpl implements GlobalConstants
{
public GlobalImpl()
{
System.out.println(name);
}
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 23
你最好使用依赖注入:
public class Globals {
public int a;
public int b;
}
public class UsesGlobals {
private final Globals globals;
public UsesGlobals(Globals globals) {
this.globals = globals;
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*SFT 11
很多很好的答案,但我想给出这个例子,因为它被认为是另一个类访问类变量的更合适的方法:使用getter和setter.
您以这种方式使用getter和setter而不仅仅是将变量设为public的原因如下.让我们说你的var将是一个全局参数,你永远不希望有人在你的程序执行期间改变(在你用团队开发代码的情况下),比如网站的URL.从理论上讲,这可能会改变,并且可能会在程序中多次使用,因此您希望使用全局var来一次更新所有内容.但是你不希望别人进入并改变这个var(可能没有意识到它有多重要).在这种情况下,您只是不包含setter方法,并且只包含getter方法.
public class Global{
private static int var = 5;
public static int getVar(){
return Global.var;
}
//If you do not want to change the var ever then do not include this
public static void setVar(int var){
Global.var = var;
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,Java OO程序中没有"GLOBAL"的概念
然而,你的问题背后有一些事实,因为在某些情况下你想要在程序的任何部分运行一个方法.例如--- Phrase-O-Matic app中的random()方法;它是一个应该可以从程序的任何地方调用的方法.
所以为了满足上面这样的事情"我们需要有类似全局的变量和方法"
宣布全球变量.
1.Mark the variable as public static final While declaring.
Run Code Online (Sandbox Code Playgroud)
宣布一种全球化的方法.
1. Mark the method as public static While declaring.
Run Code Online (Sandbox Code Playgroud)
因为我将全局变量和方法声明为静态,所以只需借助以下代码即可随意调用它们
ClassName.X
注意:根据要求,X可以是方法名称或变量名称,ClassName是您声明它们的类的名称.
小智 9
Java中没有全局变量
然而,我们所拥有的是static
关键字,这就是我们所需要的.Java中的类外没有任何东西存在.的static
关键字代表一个类变量,相反,实例变量,仅具有一个拷贝和整个创建的类,这意味着它的值可以在任何时候被改变和访问的所有实例的所有实例超越.
如果您需要一个可以在范围之外访问的全局变量,那么这是您需要的变量,但它的范围仅存在于类所在的位置,并且将是全部.
小智 8
除了常数之外,什么都不应该是全局的.
public class MyMainClass {
public final static boolean DEBUGMODE=true;
}
Run Code Online (Sandbox Code Playgroud)
把它放在你的主类中.在其他.java文件中,使用它:
if(MyMainClass.DEBUGMODE) System.out.println("Some debugging info");
Run Code Online (Sandbox Code Playgroud)
确保当您将代码从裁剪房间移开并释放时,您可以删除或注释掉此功能.
如果你有一个主力方法,比如随机发生器,我建议创建一个"工具箱"包!所有编码器都应该有一个,然后每当你想在.java中使用它时,只需导入它!
Java中没有真正的全局变量。每个静态变量都必须属于某个类(例如System.out),但是当您决定将其放入哪个类时,可以从同一类加载器加载的所有位置引用它。
请注意,在更新时应始终保护静态变量,以避免出现竞争情况。
归档时间: |
|
查看次数: |
778056 次 |
最近记录: |