将静态导入用于enum

public enum Spiciness {
    NOT, MILD, MEDIUM, HOT, FLAMING
}
import static com.jianglei.enum2.Spiciness.*;

public class Burrito {
    Spiciness degree;

    public Burrito(Spiciness degree) {
        this.degree = degree;
    }
    public String toString() {
        return "Burrito is " + degree;
    }
    public static void main(String[] args) {
        System.out.println(new Burrito(NOT));
        System.out.println(new Burrito(MEDIUM));
        System.out.println(new Burrito(HOT));
    }
}
/*
Burrito is NOT
Burrito is MEDIUM
Burrito is HOT
*/

使用static import能够将enum实例的标识符带入当前的命令空间,所以无需再用enum类型来修饰enum实例。这是一个好的想法吗?或者还是显式地修饰enum实例更好?这要看代码的复杂程度了。编译器可以确何你使用的正确的类型,所以唯一要担心的是,使用静态导入会不会导致你的代码令人难以理确。多数情况下,使用static import还是有好处的,不过,程序员还是应该对具体情况进行具体分析。

注意,在定义enum的同一个文件中,这种技巧无法使用;如果是在默认包中定义enum,这种技巧也无法使用(在Sun内部对这一点显然也有不同意见)

results matching ""

    No results matching ""