我正在使用jar文件中的类的方法[print]。用于打印日志。现在我必须应用日志框架和项目所有文件使用jar文件方法来打印日志。如果不对所有文件进行更改,有没有办法做到这一点?我也无法改变jar文件类。提前谢谢。
答案 0 :(得分:1)
假设你有一个class X
,它在jar文件中,你无法改变,而且你有一堆
X.print("something");
遍及您的代码,因为该打印方法是static
,在尝试覆盖它时继承X
将不会获得任何东西(静态调用不使用继承;至少在Java中)。您需要找到所有要打印的调用,并使用您选择的日志记录方法替换它们。
然而,您可以从
中受益public class Y extends X {
// ADD constructors calling super(constructorArgs) here
public static void print(String s) {
// ADD use of logging framework here
}
// ADD all other static methods: call X.methodName(methodArgs);
// all other dynamic methods: inheritance does it for you
}
然后,您可以将所有X
替换为Y
s(无需专门查找print
的使用),事情应该可以正常工作。
相反,如果你有
X x = new X(/* args here */);
// ... and lots of these
x.print("something");
然后该方法不是静态的,将new X
形式的所有调用替换为new Y
可以解决问题。您将更改大量文件,但每个文件都进行了非常小的更改。 Y
课程中发生的所有变化都是print
不再是static
。