开发者学堂课程【Java 高级编程:Optional 类】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/348
Optional 类
内容介绍
1. Optional 类的主要功能
2.范例:传统的引用传递问题
3.范例:修改程序,按照正规的程序
Optional 类的主要功能是进行 null 的相关处理,在以前进行程序开发时,为了防止程序之中出现空指向异常,往往可以追加有 null 的验证。
范例:传统的引用传递问题
interface IMessage {
public string getcontent() ;
}
class MessageImpl implements IMessage {
@override
public string getContent() {
return " www.mldn.cn";
}
}
class MessageUtil {
private MessageUtil() {}
public static IMessage getMessage() {
return new MessageImpl( ) ;
}
public static void useMessage( IMessage msg) {
if (msg != nu11)
system.out.println(msg.getContent());
//有可能因为出现null,而导致空指向)
}
public class JavaAPIDemo {
public static void main(String[ ] args) throws Exception {
}
}
总结:
在引用接受的一方,我们往往都是被动的一方进行判断。
为了解决这种被动的操作处理,在 Java 中提供了一个有一个 optional 类,这个类可以实现空的处理操作,在这个类里面提供有如下的一些操作方法:
• 返回空数据: public staticT> Optional empty();
• 获取数据: public T get();
• 保存数据,但是不允许出现 null: public static Optional of(T value).
– 如果在保存数据的时候存在有 null,则会抛出 NullPointerException 异常;
• 空的时候返回其他数据:public T orElse(T other)
范例:修改程序,按照正规的程序
interface IMessage {
public string getcontent() ;
}
class MessageImpl implements IMessage {
@override
public string getContent() {
return " www.mldn.cn";
}
}
class MessageUtil {
private MessageUtil() {}
public static Optional<IMessage> getMessage() {
return new MessageImpl( ) ;
}
public static void useMessage( IMessage msg) {
if (msg != nu11)
system.out.println(msg.getContent());//有可能因为出现null,而导致空指向
}
public class JavaAPIDemo {
public static void main(String[ ] args) throws Exception {
IMessage temp = Messageutil.getMessage( ).get() ; //获取数据MessageUtil.useMessage(temp) ;
}
}
class MessageUtil {
private MessageUtil(){
public static optional<IMessage> getMessage() {
return Optional.of(new MessageImpl()) ; //有对象
}
public static void useMessage( IMessage msg) {
if (msg != nul1) {
system.out.println(msg.getContent());//有可能因为出现null,而导致空指向
}
}
}
interface IMessage {
public String getcontent() ;
}
总结:
在所有引用数据类型的操作处理之中,null 是一个重要的技术问题,JDK 1.8 后提供的新的类,对于 Null 的处理很有帮助,同时也是在日后进行项目开发之中使用次数很多的一个程序类。
