刚刚收到评论,我静态导入该方法不是一个好主意。静态导入是DA类中的一种方法,该类主要具有静态方法。因此,在业务逻辑的中间,我有一个da活动,显然似乎属于当前类:
import static some.package.DA.*; class BusinessObject { void someMethod() { .... save(this); } }
审阅者并不希望我更改代码,也没有,但是我确实同意他的观点。不能静态导入的原因之一是方法的定义位置令人困惑,它不在当前类中,也不在任何超类中,因此花了太多时间来确定其定义(基于Web的审阅系统没有可点击的像IDE这样的链接:-)我真的不认为这很重要,静态导入仍然很新,很快我们都会习惯于定位它们。
但是,我同意的另一个原因是,不合格的方法调用似乎属于当前对象,并且不应跳转上下文。但是,如果确实存在,则扩展该超类将是有意义的。
所以,当它是有意义的静态导入的方法呢?你什么时候做的?你是否喜欢不合格的电话的外观?
编辑:流行的观点似乎是静态导入方法,如果没有人将它们混淆为当前类的方法。例如,来自java.lang.Math和java.awt.Color的方法。但是,如果abs和getAlpha不明确,我看不出为什么readEmployee是。与许多编程选择一样,我认为这也是个人喜好。
多谢你的回覆,我想解决这个问题。
这是从Sun发布该功能时的指南中得出的(原始内容为重点):
那么什么时候应该使用静态导入?非常谨慎!仅当你打算以其他方式声明常量的本地副本或滥用继承(常量接口反模式)时,才使用它。…如果你过度使用静态导入功能,它将使你的程序无法读取和不可维护,并使用你导入的所有静态成员污染其名称空间。代码的读者(包括你,在你编写代码后的几个月内)将不知道静态成员来自哪个类。从类中导入所有静态成员可能对可读性特别有害;如果只需要一个或两个成员,则分别导入它们。
(https://docs.oracle.com/javase/8/docs/technotes/guides/language/static-import.html)
我想特别指出两个部分:
extend some.package.DA
some.package.DA
import static some.package.DA.save
DA.*