java接口实例化问题

2020-02-23  本文已影响0人  李念阳

在java中接口不能直接实例化。但是有的时候,我们会看到这种匿名内部类实例化的代码。如下:

public interface PersonConfig {
    String get(String key);
}
public interface BoyConfig extends PersonConfig {
    BoyConfig DEFAULT = k -> null;
}

BoyConfig DEFAULT = k -> null
这行代码比较难读,运用了java匿名内部类和lamda这两种技术,了解到这些以后,我们可以尝试拆分一下
第一步:不用lamda语法

public interface BoyConfig extends PersonConfig {
    BoyConfig DEFAULT = new BoyConfig() {
        @Override
        public String get(String key) {
            return null;
        }
    };
}

第二步:不用匿名内部类

public class BoyConfigImpl implements BoyConfig{
    @Override
    public String get(String key) {
        return null;
    }
}
public interface BoyConfig extends PersonConfig {
    //    BoyConfig DEFAULT = new BoyConfig() {
//        @Override
//        public String get(String key) {
//            return null;
//        }
//    };
    BoyConfig DEFAULT = new BoyConfigImpl();
}

经过上述解剖以后,这段代码就变得清晰多了。

上一篇下一篇

猜你喜欢

热点阅读