我收到IDE的警告说,
应该以静态方式访问JFrame类型的静态方法setDefaultLookAndFeelDecorated(boolean)
我想知道哪个更正确:
引用来自声明类(JFrame.setDefaultLookAndFeelDecorated(true);
),
或继承类(MyJFrame.setDefaultLookAndFeelDecorated(true);
)?
答案 0 :(得分:3)
我会在声明它的类上调用该方法。
在子类上调用它也会有效,但由于静态方法无法真正被继承/覆盖,这似乎有点令人困惑。
出于同样的原因,我也避免使用与你的父类之一相同名称/签名的静态方法。
这些建议肯定不“更加面向对象”,但这是我的观点:由于正常的OO思维不能很好地转化为静态方法,所以完全避开。
答案 1 :(得分:1)
JFrame.setDefaultLookAndFeelDecorated在我的视图中将是一种首选方式,因为如果使用DynamicWindow.setDefaultLookAndFeelDecorated,则该方法的来源变得不那么明显。我认为你在子类中创建了相同的方法来隐藏超类中的原始方法。
因此,对于那些阅读代码的人来说,这一点并不那么明显。
答案 2 :(得分:0)
在这种情况下,JFrame.setDefaultLookAndFeelDecorated(true);
将是调用所述静态方法的适当方法。
详细说明Thilo的答案中的第三句话,你无法覆盖静态方法。它无法完成。
如果您创建一个与现有静态方法具有相同签名的新静态方法,那么您只是隐藏原始静态方法,并且使用您的代码的任何人都会感到困惑。
请记住,在静态方法的情况下,调用哪个方法取决于引用类型。在实例方法的情况下,它取决于实例类型。
静态方法是代码气味。只有在您必须创建自己的方法时才使用其他静态方法。