有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

注释如何强制所有Java类都有一个属性

我希望所有Java类都有一个logger变量:

private static final Logger logger = Logger.getLogger(Foo.class);

但我必须在所有课堂上打这一行

有没有办法实现自动化?你能帮我吗


共 (4) 个答案

  1. # 1 楼答案

    如果您使用的是Eclipse,请为Java类创建一个新的代码模板。这将在每个新类中添加一个记录器引用,包括适当的导入。如果你不是在谈论log4j,那么调整导入

    enter image description here

    然后

    enter image description here

  2. # 2 楼答案

    我猜你真正想要的不是遗产。事实上,继承是合并记录器IMHO的一种相当糟糕的方式,因为记录器并不是类的真正功能,而是应用程序的cross-cutting concern

    您需要的是一个经过调整的新类模板。如果您正在使用eclipse,可以在Java->;下的首选项中找到它;代码样式->;编码模板然后切换到对话框的右侧,并选择Code->;新Java文件

    在intellij idea中,您可以在文件->;设置->;文件模板->;课程

    this question的公认答案演示了在模板中合并log4j日志记录,以及导入语句

  3. # 3 楼答案

    使用继承

    继承可能会对你有所帮助

  4. # 4 楼答案

    嗯, 您可以做的是创建一个抽象父类,它拥有这个logger变量,并且您的每个类都继承自这个类。 但是在java中,只允许一个继承,您可能会遇到麻烦,因为继承被父类阻止

    第二个问题是:记录器将始终使用抽象父类的类进行初始化。如果你不介意的话