首页 > 解决方案 > Java:存储对静态类的引用是可变的

问题描述

我需要将一个类的引用存储在一个变量中,这样我就可以在该变量上调用该类的静态方法。

主.java

public class Main {

    private static SomeClass cls;

    private static void main(String[] args) {
        **cls = SomeClass;**
        cls.doSomething();
    }

SomeClass.java

public class SomeClass() {
    public static doSomething() {
    }
}

cls = SomeClass 在这里不起作用,但我也不想实例化 SomeClass。

任何人都可以帮忙吗?

标签: java

解决方案


这是没有意义的。

你可以写

private static SomeClass cls = null;

(或保留它未分配,因为默认值null无论如何都是)

cls.doSomething()

不会抛出NullPointerException,会调用静态方法。

但是,没有理由这样做。无论您为cls变量分配什么,它都会调用SomeClass.doSomething(),因此消除该变量并简单地调用 会更有意义SomeClass.doSomething()

这个想法是 cls 可以根据上面代码中未提供的某些条件引用多个类

这个想法行不通。cls变量的编译时类型将决定static被调用方法的类。因为它只能有一个类型,所以它总是相同的static方法。


推荐阅读