我有要求,在调用类中的任何静态方法之前,我必须调用一些初始化方法。
现在的问题是每当我向该类添加新的静态方法时,我忘记调用该初始化方法,我想知道是否有任何设计模式来解决这个问题。我希望无论何时从类中调用静态方法,都会调用初始化方法。
答案 0 :(得分:0)
答案 1 :(得分:0)
Java has static initialization blocks。像这样:
public class SomeClass {
static {
// Your code here
}
}
答案 2 :(得分:0)
对于这个问题,AOP可能有点过分。您可能想要尝试的是将每个静态方法委托给另一个类,并将初始化代码添加到该类的构造函数中。类似的东西:
class StaticClass {
public static void m1 () {
new Worker().m1();
}
public static void m2 () {
new Worker().m2();
}
}
class Worker {
public Worker() {
intialize();
}
public void m1() {
// Real m1 work
}
public void m2() {
// Real m2 work
}
}
这至少解决了忘记调用init代码的问题。
那就是说:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem
你能退一步告诉我们你为什么需要这个吗?