Java静态方法调用

发布于 2024-11-25 06:35:32 字数 360 浏览 2 评论 0原文

调用静态 Java 方法(工厂类方法)会创建该类的对象吗?

我的意思是静态方法返回一个值,假设数组的大小(数组是类的变量)

我已经检查了代码,但看不到该类的对象在调用静态方法之前从未实例化。 ?

public static boolean isFiveInstance() {
    return _instances.size() == 5;
}

_instances 是类变量

private static ArrayList<LocalMediaPlayer> _instances;

,正在创建并填充到构造函数中。

is Calling a static Java method ( a factory class method ) creates an object of that Class ?

I mean a static method returns a value let's say an Array's size ( array is variable of class )

I've checked the code but couldn't see that the Object of that class never instantiated before calling the static method. ?

public static boolean isFiveInstance() {
    return _instances.size() == 5;
}

and _instances is class variable

private static ArrayList<LocalMediaPlayer> _instances;

and is being created and filled in the constructer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴者 2024-12-02 06:35:32

不,事实并非如此。这就是创建静态方法背后的要点。静态方法不使用它们在其中定义的类的任何对象的实例变量,因此您在静态方法中引用的所有内容也必须是静态的。

这就是为什么您调用像 Class.StaticMethod() 这样的静态方法而不是:

new Class().StaticMethod();

new 将实例化该类,从而创建该对象的新实例。

No it does not. That is the point behind creating static methods. Static methods use no instance variables of any object of the class they are defined in either, so everything you refer to inside your static method must be static also.

That is why you call a static method like Class.StaticMethod() instead of:

new Class().StaticMethod();

the new will instantiate that class, thus creating a new instance of that object.

忘你却要生生世世 2024-12-02 06:35:32

不,静态调用不会实例化对象(因为它们不需要对象)。

第一次引用类(包括静态方法调用)时,会加载该类。由类加载器。

这就是静态初始化器发挥作用的地方:

static {
     // do something
}

每当类初始化时都会调用此块(每个类加载器一次)

No, static invocations do not instantiated objects (because they do not require one).

The first time you refer to a class, including static method invocation, the class is loaded. by the classloader.

That's where the static initializer comes into play:

static {
     // do something
}

this block is called whenever the class is initialized (once per classloader)

太阳公公是暖光 2024-12-02 06:35:32

不,调用静态方法不会创建该类的实例。这就是静态方法与实例方法的不同之处。它们不需要实例化它们所属的类的实例来运行。

No, calling a static method does not create an instance of the class. That's where static methods differ from instance methods. They don't need an instance of the class they belong to to be instantiated to be run.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文