Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无初始化的Java默认构造函数_Java_Constructor_Default_Super - Fatal编程技术网

无初始化的Java默认构造函数

无初始化的Java默认构造函数,java,constructor,default,super,Java,Constructor,Default,Super,我有一个类似于下面的类,包含所有静态方法。因此,该类在其他类中使用时未初始化。在从这个类调用任何静态方法之前,我必须检查一个条件。即使我添加了一个默认构造函数,它也不会被调用。有没有人能提出一些想法,在不实例化这个类的所有用法的情况下提供解决方案?它需要是一个默认构造函数,也可以是一个简单的其他解决方案 每次打电话之前,我都需要检查网络连接。静态初始值设定项仅在第一次加载时被调用 public class ABCServerUtil { public stati

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

每次打电话之前,我都需要检查网络连接。静态初始值设定项仅在第一次加载时被调用

        public class ABCServerUtil {

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


        }
我需要一些东西,如下面的一段代码被调用和退出

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

您可以使用静态初始化器

static {
    // code here
}

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

如果每次调用一个静态方法时都需要检查条件,那么除了执行以下操作外,您没有太多选择:在每个方法的开头调用一个方法进行检查

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


您可以像这样直接调用类名为的静态方法

 boolean val=ABCServerUtil.checkServer();

提供了一些教程

我认为这是您的解决方案:


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

使用静态初始化块

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

因为已经有5个答案说了同样的话,但没有一个是你想要的:


类似于的工具听起来像是您需要的。

因此,在其他类中使用时,该类未初始化。-你怎么知道它没有被初始化?您没有任何静态初始值设定项块。。请详细解释发生了什么和没有发生什么您所描述的不是对象,因此不需要构造函数。您正在定义静态行为,因此需要对其进行编程。如果您需要在每次调用一个静态方法时检查条件,-他可以使用代理在此处调用其所有方法:P@TheLostMind我没看到问题被编辑了?@没问题。现在我该怎么办?我能更新我的答案吗?
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
    }
}