让接口提供实现它的 Class 实例

Having an Interface provide an instance of a Class that implements it

如果我有接口:

public interface Val {
    public NilVal NIL;
}

以及实现它的单例 class:

public class NilVal implements Val {

    private static NilVal nil = null;

    private NilVal() {
    }

    public static NilVal getInstance(){
        if(nil == null)
            nil = new NilVal();
        return nil;
    }
}

我将如何在界面中将 NIL 实例化为 NilVal 对象?

你可以做到

public interface Val {
    Val NIL = NilVal.getInstance();
}

不过你也可以

public interface Val {
    Val NIL = new NilVal();

    class NilVal implements Val {
        private NilVal() { }
    }
}

甚至

public interface Val {
    Val NIL = NilVal.NIL;

    public enum NilVal implements Val { NIL }
}