无初始化的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
}
}