过去我经常在 Java 类中使用“import static”构造。最近我意识到,而不是
import static my.pack.A.MY_CONSTANT;
您可以使用
import my.pack.A;
public class B {
private static final MY_CONSTANT = A.MY_CONSTANT;
}
这种方法最明显的优点是:
- 您可以在 Eclipse 中使用重构轻松地从代码中删除所有长常量表达式
A.B.C.CONSTANT.ANOTHER_ONE.TOO_LONG
,而不会弄乱静态导入(在 Eclipse 中掌握起来并不那么快) - 您可以为任何表达式赋予任何名称,这在当前上下文中可能更有意义。
例如:
private static final PAYMENT_TYPE = PaymentType.CASH;
...
calculateSomething(amount, PAYMENT_TYPE);
代替
import static my.pack.PaymentType.CASH
...
calculateSomething(amount, CASH);
如果默认的 PaymentType 值更改为 CREDIT_CARD,这也更容易重构。
我的问题是:与静态导入相比,这种方法有什么缺点,还是可以在任何地方使用?
我现在唯一关心的是生成的编译 .class 文件,这可能与所描述的两种方法不同。因此理论上性能和内存使用可能会受到影响。