gpt4 book ai didi

java - 应用日志记录框架,对现有代码进行最少的更改

转载 作者:行者123 更新时间:2023-11-30 07:29:37 25 4
gpt4 key购买 nike

我正在使用 jar 文件中的类的方法[print]。用于打印日志。现在我必须应用日志框架并项目所有文件都使用 jar 文件方法来打印日志。有没有什么方法可以在不更改所有文件的情况下做到这一点?我也无法更改 jar 文件类。提前致谢。

最佳答案

假设你有一个class X,它位于一个你无法更改的jar文件中,并且你有一堆

X.print("something");

在您的代码中,由于 print 方法是静态的,因此子类化 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(无需专门查找 print 的使用),一切都应该正常工作.

如果你有

 X x = new X(/* args here */);
// ... and lots of these
x.print("something");

那么该方法不是静态的,将所有 new X 形式的调用替换为 new Y 即可解决该问题。您将更改很多文件,但对每个文件进行的更改非常少。 Y 类中发生的所有变化是 print 将不再是静态

关于java - 应用日志记录框架,对现有代码进行最少的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36336057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com