实用工具类 – 正确的方法是什么?
具有公共静态的所有方法的实用程序类的正确方法是什么。
我应该使用最终类还是抽象类?
请给出建议。
例如:
public final class A{ public static void method(){ /* ... */ } }
要么
public abstract class A{ public static void method(){ /* ... */ } }
abstract
有其自身的目的。 如果你想要其他类( override
)实现的一些类function,那么你使用abstract。
如果它只是实用程序类,但你不希望其他类inheritance它,那么我会选择final
类。 如果实用程序类只有static
方法,那么任何方法都不能覆盖它们,所以将它们放在non-final
类中也没有区别。
创建实用程序类的最佳方法。 如果您不希望其他类inheritance它。
//final, because it's not supposed to be subclassed public final class AlertUtils { // private constructor to avoid unnecessary instantiation of the class private AlertUtils() { } public static ..(){}//other methods }
final
这里比abstract
更有意义。 通过将类标记为final
,您禁止扩展类。 另一方面,将类标记为abstract
是相反的,因为没有子类的抽象类没有多大意义。 所以预计会延长。
使类最终并添加一个私有构造函数。 (这是像java.lang.Math
这样的类使用)
public final class A { private A() {} public static void method() { } }
如果你想让其他类使用这个类的function,那么使它成为抽象的其他类使它成为最终
这些是我发现的一些指导原则:
- 所有方法都必须是公共静态的,因此无法覆盖它们。
- 构造函数必须是私有的,因此它会阻止实例化。
- 该类的最终关键字可防止子类化。
- 类不应具有任何非final或非静态类字段。
正如您所问,类名不能是抽象的(不可取) – >这意味着您计划在另一个类中实现它。 如果要防止子类,请使用final作为类名; 如果要防止实例化,请使用私有构造函数。
- 如何在Swing中暂时禁用事件监听器?
- JFrame在单独的类中,ActionListener怎么样?
- 用于在NetBeans中运行Maven目标的按钮
- Java中监听器的目的是什么?
- 在Hibernate上更新分离对象的某些字段的最佳方法?
- Java:将文本文件输出到Console
- Junit:为删除实体的方法编写测试?
- org.apache.struts2.json.JSONException:org.hibernate.LazyInitializationException:懒得初始化一个集合
- 无法解析类型com.fasterxml.jackson.core.JsonGenerator。 它是从所需的.class文件间接引用的