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

时间:2009-05-16 12:12:30

标签: java design-patterns static

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

5 个答案:

答案 0 :(得分:12)

不是常规的java编程。

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

答案 1 :(得分:8)

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

答案 2 :(得分:4)

我认为创建静态utils类很好,特别是当你还不确定设计应该是什么时,因为你仍然在学习问题域。

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

我认为我们的程序员不公平地对“返工”进行了抨击。您需要完成工作才能更好地理解工作以正确地完成工作。我看不出过这个捕获22;

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

我敢打赌,今天的API设计师希望能够拆分整数(和其他包装类)......但是他们很好并且真正坚持他们所拥有的东西。这本身就是一个警告......静态意味着最终,并且有一个很好的理由(与C ++不同)默认情况下可以覆盖 。静态本质上比非静态的更具“绑定性”......你不能将实现适应不同的情况,上下文等等。

干杯。基思。

答案 3 :(得分:0)

我认为在同一个具有相同名称的类中使用静态和非静态方法是个坏主意。这可能非常令人困惑。我建议在这种情况下尝试使名称不同。

同样,不要创建具有相同名称但具有不同大小写的方法,或者使用与同一类中的类同名的方法。两者都是合法的,甚至发生在JDK中,但令IHMO感到困惑。

答案 4 :(得分:-1)

我认为在与单身人士打交道时并不特别。