代碼
提交代碼
import java.util.Optional;
public class OptionalDemo3 {
static class Category {
private String name;
public Category(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Category{" +
"name='" + name + '\'' +
'}';
}
}
static class Goods {
private String name;
private Category category;
public Goods() {
}
public Goods(String name, Category category) {
this.name = name;
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
@Override
public String toString() {
return "Good{" +
"name='" + name + '\'' +
", category=" + category +
'}';
}
}
/**
* 獲取商品的分類名稱(使用 Optional 類包裝)
* @param goods 商品
* @return 分類名稱
*/
static String getGoodsCategoryName(Goods goods) {
// 將商品實例包裝入 Optional 類,創(chuàng)建 Optional<Goods> 對象
Optional<Goods> goodsOptional = Optional.ofNullable(goods);
Goods goods1 = goodsOptional.orElse(new Goods("默認(rèn)商品", new Category("默認(rèn)分類")));
// 此時 goods1 一定是非空,不會產(chǎn)生空指針異常
Category category = goods1.getCategory();
// 將分類實例包裝入 Optional 類,創(chuàng)建 Optional<Category> 對象
Optional<Category> categoryOptional = Optional.ofNullable(category);
Category category1 = categoryOptional.orElse(new Category("默認(rèn)分類"));
// 此時 category1 一定是非空,不會產(chǎn)生空指針異常
return category1.getName();
}
public static void main(String[] args) {
// 實例化一個商品類
Goods goods = null;
// 獲取商品的分類名稱
String categoryName = getGoodsCategoryName(goods);
System.out.println(categoryName);
}
}
運行結(jié)果