Java 没有初始化的默认构造函数

Java default constructor without initialization

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

我每次打电话前都需要检查网络连接。静态初始化程序仅在第一次加载时被调用。

        public class ABCServerUtil {

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


        }

我需要像下面这样的代码来调用和退出。

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

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

static {
    // code here
}

在 class 的 属性 的任何方法(静态或其他方式)首次被访问之前 运行。

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

如果您只需要在 class 最初是 loaded/initialized 时检查一次条件 ,您可以使用 static initializer:

public class ABCServerUtil {

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

    // ...
}

你可以像这样直接调用一个名为class的静态方法,

 boolean val=ABCServerUtil.checkServer();

给出了一些教程here

我认为这是你的解决方案:Static initializer in Java

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

使用静态初始化块

static {
    //whatever code for initialization
}
  • 一个class可以有任意数量的静态初始化块
  • 它们可以出现在 class body
  • 中的任何位置
  • 静态初始化块按照它们在源代码中出现的顺序调用。

每次调用方法时都应该调用你

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
    }
}

因为已经有 5 个答案说的是同一件事,而且其中 none 似乎是您要找的答案:

Byte Buddy 这样的工具听起来正是您所需要的。