关于java:放入util类的适当方法?

Appropriate methods to put into a util class?

我正在研究一个Java类,用于解析HTML和生成RDF(我想我最终会分成两个类——一个用于解析,一个用于生成RDF)。

目前,我正在创建许多方法来检查HTML数据并将其转换为更统一的表示形式。到目前为止,我创建的一些方法是:

1
2
3
4
public boolean isInteger(String str) { }
public boolean isTime(String str) { }
public boolean isDate(String str) { }
public String dateConverter(String[] date) { } //Converts a Norwegian date into mmddYYYY

我应该把这些方法放到一个Util类中吗?目前,它们只被这个特定的类使用,但我认为在以后的某个时间点,它们可能需要被不止一个类使用。


好吧,是的,您列出的方法看起来像是UTIL类中public static方法的很好的候选者。(例如,最后的2或3非常适合称为"dateutils"的类。)

当然,如果您只在一个地方使用它们,它们也可以保持在那里的"私人帮助者",但是一旦您有多个地方使用它们,一个实用工具类就有意义了。

(编辑:过度使用静态方法可能有问题,但我认为这些方法很可能是静态实用程序,因为它们是纯函数。)


在实用程序类中收集这样的方法是一个很好的实践。即使现在从单个类调用这些方法,这些方法也可能会被附近特性中的其他客户机重用。

但是,必须注意使这个实用程序类易于重用。为此,方法签名(实际上是它们的参数)必须尽可能通用。它们不应该接受特定于类的输入。

我的另一个建议是将这个实用程序类划分为多个类,如果它开始包含许多不连贯的方法的话。您可以通过将相关方法分组到单独的类中来实现这一点。例如,您编写的方法可以移动到TypeUtils类,例如,您可以在Html2RdfUtils类中收集与转换相关的方法。

最后,如果您认为这些实用程序类对您的其他项目有益,那么您可以将它们收集到一个不同的库中。


它们似乎足够通用,适合放在一个Util类中。至少我会的。基本上,任何在代码中解析字符串的类都需要使用这些方法。不过,为了避免不必要的构造,在将它们添加到类中之前,我会使它们保持静态。

分解是一个很好的习惯。如果您不确定是否需要使用它们,请继续操作。它将为您提供使用实用程序类的练习。


如果您最终想要将它们分成两个类,那么您可能需要将基类定义为接口或抽象类。

根据您的需求,抽象类应该是正确的选择。将子类与抽象类之间的共同点放在一起。(可以在抽象类中实现方法)

从另一个答案,我想问一个问题?答案建议在方法前面加上静电,以避免不必要的施工,这很有意义。

我知道抽象类不需要实例化来调用它的方法。也可以避免施工。

有问题吗?哪条路更合法?还是更好?或者完全一样。