Java 如果没有非静态类成员,是否必须使类成为静态的?
如果一个类没有任何非静态类成员,那么将该类中的所有方法都设置为静态是一种好的做法吗?Java 如果没有非静态类成员,是否必须使类成为静态的?,java,variables,methods,static,instance,Java,Variables,Methods,Static,Instance,如果一个类没有任何非静态类成员,那么将该类中的所有方法都设置为静态是一种好的做法吗? 就像一些没有任何实例变量的管理器一样 如果类永远不会有实例,那么所有方法都应该是静态的,这将是调用它们的唯一方法(您不能执行myInst.myFunc(),因为myInst不存在) 这可能与: Math示例是一个很好的例子,如果不得不这样做,会让人感到困惑 Math myCalculator = new Math() myCalculator.multiply(x,y); 除非myCalculator可能对P
就像一些没有任何实例变量的管理器一样 如果类永远不会有实例,那么所有方法都应该是静态的,这将是调用它们的唯一方法(您不能执行
myInst.myFunc()
,因为myInst
不存在)
这可能与:
Math
示例是一个很好的例子,如果不得不这样做,会让人感到困惑
Math myCalculator = new Math()
myCalculator.multiply(x,y);
除非myCalculator
可能对PI、E等有不同的定义
简而言之,是的,没有非静态成员的类应该只有静态方法
编辑:安迪·托马斯提出了一个很好的观点
您的数学
可能会实现乘法
接口,因为它可以将两个东西相乘。同时,我的乘法器和adder
类(我知道这是一个糟糕的类,但作为示例)也实现了乘法器。在这种情况下,方法必须是非静态的,您必须实例化一个实例,以便将它传递给将使用它的任何人
接口逻辑一直在我的脑海中(正如一位教授所教):方钉,圆孔。如果你想通过这个圆孔,你必须是圆的。如果你不存在,你就不是圆的,也不能穿过洞。事实上,我认为最好不要让这样一个类的所有方法都是静态的。但我认为这是一个意见问题。如果有人持相反的观点,我也不会感到太惊讶。请注意,静态方法不能实现接口。您可能希望您的类实现一个接口,即使它缺少实例字段。@Andy说得好。i、 e.java.lang.Runnable接口,以便可以在线程上执行实例。