在同一个类中使用静态和非静态方法是错误的吗?

Ank*_*kur 12 java static design-patterns

在同一个类中使用静态和非静态方法是错误的吗?

kro*_*old 12

不是常规的java编程.

但是如果你正在广泛地使用依赖注入,你可能根本没有或几乎没有静态方法.在这样的上下文中,通常只有少数实用程序类具有静态方法,而没有其他静态方法.


Tee*_*ppa 8

不,这没错.例如,常见的用法是在类定义中使用静态工厂方法.


cor*_*ttk 5

我认为创建静态 utils 类很好,尤其是当您不确定(还)设计应该是什么时,尤其是当您仍在学习问题域时。

静态是一个“尚未正确设计”的标记。通常静态解决方案是完全足够的;但有时,随着项目的进展,您会发现您确实必须重写“整个部分”,但您(在那个后期阶段)对问题域有了更全面的了解,因此能够实际设计一个这些问题的“正确解决方案”。

我认为我们程序员对“返工”不公平。你需要做好工作,才能充分理解工作,才能正确地完成工作。我认为没有办法超越这个捕获 22;

我可以从核心 API 中引用许多静态示例。java.lang.Math、java.util.Arrays、java.util.Collections。但是请注意,这些类是“utils 类”,它们的存在只是为了提供一堆静态方法。恕我直言,“有状态对象”中静态方法的存在只是乞求重构。

我敢打赌,今天的 API 设计者希望能够分解 Integer(和其他包装类)……但他们确实很好地坚持了他们所拥有的东西。这本身就是一个警告...... static 意味着 final,并且有一个很好的理由(与 C++ 不同)java 方法可以在默认情况下被覆盖。静态本质上比非静态更具“约束力”……在技巧上,您无法使实现适应不同的情况、上下文等等等。

干杯。基思。