在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();
}
经过上述解剖以后,这段代码就变得清晰多了。
网友评论