在为我的类设计测试或实现代码时,我喜欢将代码拆分为可读性和功能性的方法。但是,鉴于main()
是静态的,这使得从静态方法到非静态方法来回传递数据和控制变得很麻烦。
我想做的是将main()
留空,对我的实际实现类(代码是非静态的)进行一次方法调用,
或在我的实现类private static
两者都有问题吗?我倾向于制造一切private static
。
答案 0 :(得分:3)
在我的实现中创建所有类私有静态
这与OOP方式相矛盾,如果您的项目只需要功能和过程并且不依赖于对象和消息,则可以清楚地表明面向对象编程时,设计是非常错误的。
在OOP设计中使用静态方法是不好的,因为它不允许您覆盖它们并使用重要的 dynamic dispatch 属性,并且它允许更少的代码重用性
你的思维方式似乎是一个必要的语言程序员(C?),如果你真的想成为一个更好的java程序员,你应该使用更好的OOP设计。确保您拥有相互交互的类,并以组织方式相互发送消息(调用方法)。
尝试查看OOP教程,尝试思考如何使项目更加面向对象。一开始可能很难并且看起来多余,但是一旦你习惯了它 - 你将能够解开java最重要的一个方面 - 作为OOP语言,你就赢了#34; java中的程序C"。
答案 1 :(得分:0)
您可以尝试调用非静态方法,如下所示:
public static void main(..) {
..
MyClass clazz = new ...;//create object
clazz.myMethod();//call method on object itself rather than making all methods static.
}
答案 2 :(得分:0)
我理解您对混淆的疑虑,我在过去使用此模式时完全避免使用静态方法,并降低使用过的语言功能的复杂性。
public class Main {
public static void main(String[] args) {
new Main().m(args);
}
}
但在Java中,静态方法是一个重要的设计元素(Java: when to use static methods)。你会在API中找到静态方法。所以你也应该按预期使用它们。