我有一个实用程序类,其中包含所有静态方法,其中一个方法需要正则表达式匹配。
将模式声明为类的静态数据成员是好习惯还是将其声明为使用该模式的方法的实例变量是否可以?同一类的多个方法不会使用此模式。虽然这个实用方法可以被多个线程调用。
public final class Utility {
public static someMethod(Sting in) {
Pattern p = Pattern.compile("some pattern expression");
Matcher m = p.matcher(in);
if (m.matches()) {
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者下面的方法更好?
public final class Utility {
private static final Pattern p = Pattern.compile("some pattern expression");
public static someMethod(Sting in) {
Matcher m = p.matcher(in);
if (m.matches()) {
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要确定在 Utility 类中使用该模式的位置和频率。
如果它是一个正则表达式,您仅需要一种特定方法,并且不会在其他任何地方(在可预见的将来)再次使用它,那么将其声明为该方法中的实例变量。
另一方面,如果它是一个非常可重用的正则表达式(例如电子邮件模式),请考虑将其设为静态字段。然后您的所有实用方法都可以访问它。