繁体   English   中英

Java默认构造函数,无需初始化

[英]Java default constructor without initialization

我有一个类似于以下所有静态方法的类。 因此,该类在其他类中使用时未初始化。 在从此类调用任何静态方法之前,我必须检查条件。 即使我添加了默认构造函数,也不会调用它。 有人可以在不实例化此类的所有用法的情况下提出一些解决方案的想法吗? 它需要一个默认的构造函数,也可以是一个简单的其他解决方案。

拨打电话之前,我需要每次检查网络连接情况。 静态初始化程序仅在首次加载时被调用。

        public class ABCServerUtil {

        public static boolean checkServer() {...bla...bla...}


        }

我需要像下面的代码这样的东西被调用并退出。

        public ABCServerUtil(){
        if(!isNetworkOnline())
        return;
        }

如果每次调用一个静态方法时都需要检查条件,则别无选择,只能做自己正在做的事情:在每个方法的开头都调用一个方法进行检查。

如果只需要在最初加载/初始化类时检查一次条件,则可以使用静态初始化器

public class ABCServerUtil {

    static {
        // Code here runs when the class is loaded
    }

    // ...
}

使用静态初始化块

static {
    //whatever code for initialization
}
  • 一个类可以具有任意数量的静态初始化块
  • 它们可以出现在班级的任何地方
  • 静态初始化块按它们在源代码中出现的顺序被调用。

每次在调用方法时应调用您

public class Test {

    public static void checkServer() {
        if (!checkNetwork()) {
            return;
        }
    }

    public static void checkClient() {
        if (!checkNetwork()) {
            return;
        }
    }

    private static boolean checkNetwork() {
        return true; // or false depending on network condition
    }
}

您可以使用静态初始化程序。

static {
    // code here
}

它会在首次访问该类的任何属性方法(静态或其他)之前运行。

您可以使用这样的类名称直接调用静态方法,

 boolean val=ABCServerUtil.checkServer();

这里有一些教程

由于已经有5个答案在说同样的事情,而您所追求的似乎都不是:

Byte Buddy这样的工具听起来像您需要的。

我认为这是您的解决方案: Java中的静态初始值设定项

实际上,您需要在第一次加载类时执行一段代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM