如果我用Java创建一个类的实例,为什么最好是静态调用同一个类的静态方法,而不是使用this.method()?为什么最好从方法的类的实例中静态地调用静态方法?
当我尝试通过this.staticMethod()从自定义类的构造函数中调用静态方法staticMethod()时,我从Eclipse获得警告。
public MyClass() { this.staticMethod(); }
VS
public MyClass() { MyClass.staticMethod(); }
任何人都可以解释为什么这是一个糟糕的事是什么?在我看来,编译器应该已经分配了对象的一个实例,所以静态分配内存将是不必要的开销。
编辑:
什么,我听到的要点是,这是不好的做法,主要是因为可读性的,也是可以理解的。我真正想要问的是(虽然不是很清楚)是在调用MyClass.staticMethod()或this.staticMethod()之间有什么区别。
不重写静态方法,你隐藏起来。覆盖意味着多态性,这是静态方法所不具备的。 – TofuBeer 2010-04-23 03:59:18
@TofuBeer谢谢,我的术语不够精确。从某人在静态方法中使用'this'的角度来看,这可能意味着某种形式的多态性意图,而这种意图不起作用。 – Ash 2010-04-23 04:16:11