Java:有只包含一般方法的文件吗?

Java:有只包含一般方法的文件吗?,java,Java,我想知道是否有一种方法可以将方法从主文件和类文件中分离出来(比如,在c中,如何使用可以导入到项目中的方法拥有.c&.h) 具体来说,我有一个“逻辑异或”函数,我想在几个类中使用它,我认为最好不要在几个类中重复相同的函数。它们被称为函数库,是的,你可以这样做。最好的例子是java.lang.Math 最后一个类使用私有构造函数、无变量和所有静态方法 public final class FuncLib { private FuncLib() { } // prevents instant

我想知道是否有一种方法可以将方法从主文件和类文件中分离出来(比如,在c中,如何使用可以导入到项目中的方法拥有.c&.h)


具体来说,我有一个“逻辑异或”函数,我想在几个类中使用它,我认为最好不要在几个类中重复相同的函数。

它们被称为函数库,是的,你可以这样做。最好的例子是
java.lang.Math

最后一个类使用私有构造函数、无变量和所有静态方法

public final class FuncLib {

    private FuncLib() { } // prevents instantiation

    public static String formatAwesomely(String foo) {
        // code
    }

    public static int calculateScore(BaseballGameData data) {
        // code
    }

}

在Java中,您必须将所有内容放入一个类中。一般约定是使用名为
Utils
(或
BooleanUtils
或任何您喜欢的组织/命名约定)的类,并将泛型纯函数作为静态方法放入其中

public final class FuncLib {

    private FuncLib() { } // prevents instantiation

    public static String formatAwesomely(String foo) {
        // code
    }

    public static int calculateScore(BaseballGameData data) {
        // code
    }

}

Java 5和更高版本有一个特性,可以减少使用此类函数的繁琐。

由于Java是一种面向对象的语言,您可能需要考虑您的目标是什么。在传统的面向对象设计中,如果多个对象确实有一个跨它们通用的共同祖先方法,那么所有这些类都应该是该类的子类

例如:

想想动物,比如说我们有一只狗和一只猫。所有的动物都会发出噪音。您可能有两个类都需要的“makeNoise()”方法。一个常见的设置将有一个“动物”类和两个子类,它们扩展了名为“狗”和“猫”的“动物”类


在这种情况下,如果代表所有动物的“makeNoise()”方法对于您更具体的类来说是足够的,那么它们就可以使用它了。此外,也许猫和狗以同样的方式发出噪音(从它们的嘴里),但最终它是一种不同的噪音(汪汪声和喵喵声),你可以选择用任何特定于类的属性覆盖你的“makeNoise()”方法。

我认为该模式的通用术语是“实用类”。嗯,在我的组织中从未这样称呼过它们,但我认为这非常合适!:-)只有“一个包含所有静态方法的类”可以工作,其余的用于防止意外使用该类。@没错,其余的只是保护措施。它们是我极力推荐的安全措施,足以说明它们是必需的。虽然这不完全是真的,但这是真的,我愿意就此撒谎。:-)为了“好的设计”,你应该给这个类一个私有的无参数构造函数,这可以防止(无意义的)实例化。没有猫和狗的继承例子是不完整的-1:我不确定模糊的OO劝导与处理教科书中全局函数用例的问题有什么关系。