您的位置:首页 > 编程语言 > Java开发

java8新特性学习-------Optional的相关操作 & 接口中的默认方法,静态方法

2020-01-15 11:38 841 查看

Optional 容器的常用方法

  1. Optional.of(T t) :: 创建一个 Optional 实例
  2. Optional.empty :: (创建一个空的 Optional 实例)
  3. Optional.ofNullLable(T t) :: 若t 不为 null ,创建 Optional 实例,否则创建空实例
  4. isPresent() :: 判断是否包含值
  5. orElse(T t) :: 如果调用对象包含值,返回该值,否则返回 t
  6. orElseGet(Supplier s) :: 如果调用对象包含值,则返回该值,否则返回s 中获取的值
  7. map(Function f) :: 如果有值对其处理,并返回处理后的 Optional ,否则返回 Optional.empty()
  8. flatMap(Function mapper) :: 与 map 类似,要求返回值必须是 Optional

接口中的默认方法静态方法

java8 中允许接口中有已经实现的默认方法,用 default 实现

接口 A

public interface A {
default String show() {
return "A Method";
}
}

接口 B

public interface B {
default String show() {
return "B method";
}
}

类ClassC

public class ClassC {
public String show() {
return "I am ClassC";
}
}

测试:

1. 继承 一个类 实现一个接口

类优先 原则

public class MyFunDeno extends ClassC implements A{
@Test
public void test() {
MyFunDeno mf = new MyFunDeno();
System.out.println(mf.show());
}
}

2. 继承一个类 实现两个接口

public class MyFunDeno extends ClassC implements A,B{
@Test
public void test() {
MyFunDeno mf = new MyFunDeno();
System.out.println(mf.show());
}
}
也是 **类优先** 同上
  1. 实现两个接口
public class MyFunDeno implements A,B{
@Test
public void test() {
MyFunDeno mf = new MyFunDeno();
System.out.println(mf.show());
}
@Override
public String show() {
// 重写 A 方法
return A.super.show();
}
}

则需要重写方法(明确重写的是那个)

接口中的静态方法

public interface A {
default String show() {
return "A Method";
}
public static void groan() {
System.out.println("wow~");
}
}

调用 :接口名.静态方法名

@Test
public void test2() {
A.groan();
}

附图:(来自尚硅谷学习视频)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
即客。 发布了23 篇原创文章 · 获赞 10 · 访问量 361 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: