我有一个类似于下面的类,所有静态方法。因此,在其他类中使用时,类未初始化。我必须在调用此类中的任何静态方法之前检查条件。即使我添加了默认构造函数,它也不会被调用。有人可以建议想要解决方案,而不是在所有用法中实例化这个类吗?它需要一个默认的构造函数可能是一个简单的其他解决方案。
我需要在拨打电话之前每次检查网络连接。静态初始化程序仅在加载时第一次被调用。
public class ABCServerUtil {
public static boolean checkServer() {...bla...bla...}
}
我需要一些像下面的代码来调用并退出。
public ABCServerUtil(){
if(!isNetworkOnline())
return;
}
答案 0 :(得分:2)
如果您需要检查条件每次调用一个静态方法,那么您没有太多选择,只能做您正在做的事情:调用方法进行检查在每个方法的开头。
如果您只需要在最初加载/初始化班级时检查条件一次,您可以使用static initializer:
public class ABCServerUtil {
static {
// Code here runs when the class is loaded
}
// ...
}
答案 1 :(得分:1)
使用静态初始化块
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
}
}
答案 2 :(得分:0)
您可以使用静态初始化程序。
static {
// code here
}
它将在首次访问类的任何属性方法(静态或其他方法)之前运行。
答案 3 :(得分:0)
答案 4 :(得分:0)
因为已经有5个答案说同样的事情,但它们似乎都不是你所追求的:
像Byte Buddy这样的工具听起来就像你需要的那样。
答案 5 :(得分:-1)
我认为这是您的解决方案:Static initializer in Java
在实践中,您需要在第一次加载类时执行一段代码。