Java函数(方法)随处可用(全局)

2022-09-03 08:39:22

我最近(4天前)开始用JAVA编程。我有一些来自C++和PHP的整体编程经验。我的问题是:我们可以在JAVA中实现一个在所有类中都可用的函数吗?我正在考虑一些全局日志记录功能,我需要在几个地方调用(日志事件,错误等)。

想象一下,我有两个班级,A和B。我需要在它们两个中调用日志记录函数,但我不想复制整个函数体(我相信这是可怕的事情),我想称之为严格(不创建另一个类,实例化它,然后从实例调用),就像.所以我应该使用一个抽象类C,A和B将扩展,但它们已经是其他类(内置)的扩展。由于不允许多重继承(是吗?),我需要做一些技巧。辛格尔顿也不取悦我。在PHP或C++我只使用函数体创建单独的文件,然后包含它。logEvent(someVariable)

以下是我想如何使用它:

public class A extends SomeClass {
    String error = "Error from class A";
    logEvent(error);
}

public class B extends SomeOtherClass {
    String error = "Error from class B";
    logEvent(error);
}

答案 1

将静态方法放在任何类中(它可以是utils类,或者其他什么),然后这样称呼它:ClassName.functionName()

静态方法属于类,而不是类的实例,因此无需实例化类即可访问该方法

但是Java中的所有内容都必须在一个类中,因此如果没有类名,您将无法访问它。


答案 2

您应该使用静态方法:

package xxx;

public class Util{
    public static void logEvent(String error){
    ...
    }
}

和导入静态:

import static xxx.Util.*;

public class A extends SomeClass {
    String error = "Error from class A";
    logEvent(error);
}