接口中有默认方法与静态方法
public interface Default {
default String getName() {
return "Default";
}
public static String getsName() {
return"Default";
}
}
类优先原则:
如果一个接口中定义了一个默认的方法,而另一个父类或接口中有定义了一个相同的方法:
选择父类的方法:如果父类提供了实现,选择父类的方法
接口冲突:如果一个父接口提供一个默认方法,另一个接口也提供相同默认方法(不管方法是否为默认方法),必须覆盖方法解决冲突。
public interface Default {
default String getName() {
return "Default";
}
public static String getsName() {
return"Default";
}
String getNum();
}
class Fu {
public String getName() {
return "12";
}
}
class Sub extends Fu implements Default{
public String getName() {
return "get";
}
@Override
public String getNum() {
return null;
}
}
class T {
public static void main(String[] args) {
System.out.println(new Sub().getName());
}
}
#最终打印get
public interface Default {
default String getName() {
return "Default";
}
public static String getsName() {
return"Default";
}
}
interface Default2 {
default String getName() {
return "Default2";
}
public static String getsName() {
return"Default";
}
}
class Sub implements Default,Default2{
public String getName() {
return "get";
}
}
class T {
public static void main(String[] args) {
System.out.println(new Sub().getName());
}
}
#最终打印get
join连接
public class TestStream {
public static void main(String[] args) {
List<Layer> layers = new ArrayList<>();
layers.add(new Layer("city",1,"point"));
layers.add(new Layer("city1",100,"point"));
layers.add(new Layer("city2",14,"point"));
layers.add(new Layer("city3",54,"point"));
layers.add(new Layer("city4",1500,"point"));
layers.add(new Layer("city5",1300,"point"));
String map = layers.stream().map(Layer::getLayerName).collect(Collectors.joining("----"));
System.out.println(map.toString());
}
}