Java中静态方法的作用域

Java中静态方法的作用域,java,eclipse,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()

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,我是否能够从另一个项目访问set
data
(即值10)?来自不同的应用程序?等-

或者,为了能够从不同的(eclipse)项目访问相同的
数据
(即10),我需要做些什么


如果有与此相关的官方文档,请务必让我知道。

static
方法没有特殊的范围。范围是通过使用访问说明符定义的。由于您已将静态方法定义为
public
,因此它将对相同或不同包中的所有类可见


如果您想在不同的项目中使用它,那么要么在新项目中导入当前项目的源代码,要么创建当前项目的jar并将其添加到新项目的类路径中。

静态
方法没有特殊的作用域。范围是通过使用访问说明符定义的。由于您已将静态方法定义为
public
,因此它将对相同或不同包中的所有类可见


如果您想在不同的项目中使用它,那么要么在新项目中导入当前项目的源,要么创建当前项目的jar并将其添加到新项目的类路径中。

您是在询问引用范围还是存在范围?给定标准Java包命名/作用域规则,任何可以访问方法类的类都可以访问公共静态方法。注意,这意味着(作为规则的一部分)只有同一JVM中的类才能访问

数据的存在范围是
java.lang.Class
的实例,该实例表示正在加载的类(我确信这有一些奇特的术语)。最多到JVM执行结束,但在某些情况下,类可以更早地“卸载”


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

您是在询问参考范围还是存在范围?给定标准Java包命名/作用域规则,任何可以访问方法类的类都可以访问公共静态方法。注意,这意味着(作为规则的一部分)只有同一JVM中的类才能访问

数据的存在范围是
java.lang.Class
的实例,该实例表示正在加载的类(我确信这有一些奇特的术语)。最多到JVM执行结束,但在某些情况下,类可以更早地“卸载”


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

不完全是您所要求的,但我相信它可能会帮助您理解
静态方法的概念

比如说,您有一个类
Foo
,它具有静态方法
calculatefo1()
非静态方法
calculatefo2()

非静态方法只能与此类的
对象
(类
实例
)关联使用。因此,在调用它之前,您需要实例化该对象

Foo f2 = new Foo();
cf.calculateFoo2;
可以使用类名调用静态方法,而不使用此类的实例

Foo.calculateFoo1();

您也可以使用该类的实例调用静态方法(若有)。编译器会理解的。

不完全是您要求的,但我相信它可能会帮助您理解
静态方法的概念

比如说,您有一个类
Foo
,它具有静态方法
calculatefo1()
非静态方法
calculatefo2()

非静态方法只能与此类的
对象
(类
实例
)关联使用。因此,在调用它之前,您需要实例化该对象

Foo f2 = new Foo();
cf.calculateFoo2;
可以使用类名调用静态方法,而不使用此类的实例

Foo.calculateFoo1();

您也可以使用该类的实例调用静态方法(若有)。编译器会理解的。

你把两个概念混为一谈了。 静态意味着每个类有一个实例

范围取决于访问修饰符(专用、公用、受保护、默认)

如果希望从其他eclipse项目访问此方法,则需要将此项目添加到项目库中

右键单击新项目,选择生成路径,然后添加到生成路径 转到“项目”选项卡,添加具有此getDate方法的项目


现在您可以访问您的类MyClass

您混合了两个概念。 静态意味着每个类有一个实例

范围取决于访问修饰符(专用、公用、受保护、默认)

如果希望从其他eclipse项目访问此方法,则需要将此项目添加到项目库中

右键单击新项目,选择生成路径,然后添加到生成路径 转到“项目”选项卡,添加具有此getDate方法的项目


现在您可以访问您的类MyClass

让我们假设您正在讨论是否有一个
数据的“实例”以及相应的静态方法

Java中静态方法的作用域是什么

1) (Eclipse) Project level
2) Application level
3) JVM level
1) (Eclipse)项目级

不,源代码/