开发者学堂课程【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 的处理很有帮助,同时也是在日后进行项目开发之中使用次数很多的一个程序类。