1.接口类包含接口类以及在接口中定义自变量
接口的成员特点:
A:成员变量 只能是常量。默认修饰符 public static final
B:成员方法 只能是抽象方法。默认修饰符 public abstract
public interface Person{
Integer age = 18;
String name = "apple";//接口里面定义的成员变量默认修饰符 public static final
String getUserName();
接口中包含接口类
public interface TaskConstant {
interface TaskStatus {
Integer ENABLED = 1; //启用
Integer DISABLE = 0; //废止
//执行方式
Integer MANUAL = 0;//手动
Integer AUTO = 1;//自动
}
interface Task {
//任务审核状态
Integer NO_CHECK = 201; //待审核
Integer PASS = 200; //审核通过
Integer NO_PASS = 500;//审核不通过
//任务状态
Integer NO_START = 0;//未开始
Integer ONGOING = 1;//进行中
Integer OVERTIME = 2;//超时
Integer FINISH_OVERTIME = 3;//已完成(超时)
Integer FINISH_ONTIME = 4;//已完成(按时)
Integer CLOSE = 5;//关闭
Integer SUBMIT = 6; // 待提交
}
}
运用
TaskConstant.TaskStatus.ENABLED //值为 Integer ENABLED = 1;
2.Optional
Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。
Optional详解
引出问题:Optional类与使用==判断null有什么区别?
//老写法
public String getCity(User user) throws Exception{
if(user!=null){
if(user.getAddress()!=null){
Address address = user.getAddress();
if(address.getCity()!=null){
return address.getCity();
}
}
}
throw new Excpetion("取值错误");
}
新写法
public String getCity(User user) throws Exception{
return Optional.ofNullable(user)
.map(u-> u.getAddress())
.map(a->a.getCity())
.orElseThrow(()->new Exception("取指错误"));
}
常用方法