对于两个具有相同名称但仅包含静态方法的实用程序类,我按如下方式进行:
示例:
package util2;
public class Utility {
public static void method() {
System.out.println("Second Utility. static method");
}
}
import util1.Utility;
public class Component {
private static final util2.Utility anotherUtility = new util2.Utility();
public static void usedByReflection() {
Utility.method();
anotherUtility.method();
}
}
import util1.Utility;
public class Component {
private static final util2.Utility anotherUtility = null; // There are some changes
public static void usedByReflection() {
Utility.method();
anotherUtility.method();
}
}
现在我不需要编写完整的第二个util-class名称来调用它的方法,但也许我没有预见到某些东西......?
P.S: 类Component的方法是通过某个BlackBox的反射来调用的。所有多线程安全功能都在BlackBox中。
UPD:我找到了更好的技巧:
{{1}}
现在我没有创建新对象,但是可以在没有任何错误的情况下使用它吗?
答案 0 :(得分:2)
public class CombinedUtilityComponent {
public static void usedByReflection() {
util1.Utility.method();
util2.Utility.method();
}
}
或者,更好的是,在您的代码中,您可以完全限定类名,并且它们将成为唯一的名称,而不会产生任何令人困惑的技巧。
答案 1 :(得分:1)
是的,这很有效。但是,我不会这样做。
您正在调用static
方法,就好像它是一个实例方法一样。 anotherUtility.method()
对anotherUtility
有无用的引用。
您还有util2.Utility
的不必要实例化。如果默认构造函数被禁用,这种技术将不起作用。