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

时间:2013-07-29 21:29:16

标签: java function methods global

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

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

以下是我想要使用它的方法:

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);
}

3 个答案:

答案 0 :(得分:31)

在任何类中放置一个静态方法(它可以是一个utils类,或者其他类),然后像这样调用它:ClassName.functionName()

静态方法属于类,而不是类的实例,因此您不需要实例化类来访问方法

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

答案 1 :(得分:12)

你应该使用静态方法:

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);
}

答案 2 :(得分:0)

您可以使用静态方法。

使用静态方法定义类:

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

然后,您可以像这样使用静态方法:

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

您可以在此处了解有关静态方法的更多信息,http://www.leepoint.net/notes-java/flow/methods/50static-methods.html