我有静态方法的类:如何使用静态方法向类提供参数而不更改其静态限定符?
public class CompletelyStatic {
public final static String PARAM = "abc";
public static String doSomethingSpecial() {
return "qqq" + PARAM;
}
}
这些方法在整个代码everywere使用。新的要求是从外部配置加载PARAM值。这个配置是通过配置对象提供的,通过依赖注入,即
public class CompletelyStatic {
@Inject
private Config configProvider;
public final static String DEFAULT_PARAM = "abc";
public String doSomethingSpecial() {
return "qqq" + configProvider.getSpecialParam(DEFAULT_PARAM);
}
}
不幸的是,在这里我不得不改变doSomethingSpecial静态预选赛,所以无论我用它,我必须注入CompletelyStatic实例。我宁愿避免这种情况。我大概可以做这样的事情:
public class CompletelyStatic {
public final static String DEFAULT_PARAM = "abc";
public static String doSomethingSpecial(Config configProvider) {
return "qqq" + configProvider.getSpecialParam(DEFAULT_PARAM);
}
}
但如果doSomethingSpecial调用下面一些私有方法,我会沿着传播configProvider。有更好的解决方案吗?
编辑。如果CompletelyStatic有一些内部的私有方法,我应该再传播configProvider对他们说:
public class CompletelyStatic {
public final static String DEFAULT_PARAM = "abc";
public static String doSomethingSpecial(Config configProvider) {
return "qqq" + otherMethod(configProvider);
}
private static String otherMmethod(Config configProvider) {
return "more logic " + configProvider.getSpecialParam(DEFAULT_PARAM);
}
}
编辑2.要澄清一下,我有配置对象上没有影响。我知道如果它有静态方法会很好,但它不会。
你的问题是不完整的,主要是在最后一节..请问你的私有方法是什么样子? – developer