java - Java 中静态方法的范围

标签 java eclipse

Java 中静态方法的范围是什么?

1) (Eclipse) Project level
2) Application level
3) JVM level

如果我们有一个类,让您深入了解我的要求:

public class MyClass
{
   private static int data;
   public static void setData(int val)
   {
       data = val;
   }
   public static int getData()
   {
       return data;
   }
}

如果我从不同的类(与 MyClass 在同一个项目中)调用 setData() 方法并传递一个值,比如 10,将会我能够从不同的项目访问设置的数据(即值10)吗?来自不同的应用程序?等等-

或者,我到底需要做什么才能从不同的(eclipse)项目访问相同的数据(即10)?

如果有与此相关的官方文档,请告诉我。

最佳答案

你问的是引用范围还是存在范围?在给定标准 Java 包命名/作用域规则的情况下,任何可以访问该方法的类的类都可以访问公共(public)静态方法。请注意,这意味着(作为规则的一部分)访问权限仅适用于同一 JVM 中的类。

数据存在范围仅限于代表正在加载的类的java.lang.Class实例(我是当然有一些奇特的术语来形容这一点)。这最多会持续到 JVM 执行结束,但在某些情况下,类可以提前“卸载”。

还应该注意的是,给定类的多个副本(java.lang.Class 实例)可以同时加载到给定 JVM 中,并且该类的每个副本将有自己的静态变量。然而,这种情况非常罕见。

关于java - Java 中静态方法的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927856/

相关文章:

C# 服务器向 Java 客户端发送 UDP 数据包

java - java中的一键二监听

java - 无需注入(inject)即可获得 e4 服务

java - windows下hadoop启动tasktracker的问题

java - DateTimeFormatter 为边缘情况提供了错误的格式

java - 难以通过 JButton 激活 BufferedReader

java - Maven 编译给出 : Cannot find symbol - For a class sitting in the same app

java - 清理搞砸了我的 Android 项目

java - 如何将libgdx中的图像 Actor 旋转中点?

c++ - 使用 Linux Eclipse,我能否以编程方式告诉我正在调试器 (gdb) 中执行?