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 这样的工具听起来正是您所需要的。
我有一个 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 这样的工具听起来正是您所需要的。