新人入职怎么优雅的写抽象类

最近在公司内总发现,大哥写的集合代码几乎不不为空。例如这样的!

public void completeTask(){
        Categories categories = new Categories();
        List<SubCategories> subCategories = categories.getSubCategories();
        for (SubCategories subCategory : subCategories) {
            subCategory.setId("1");
             subCategory.setName("1");
        }
        System.out.println("subCategories = " + categories.getSubCategories().toString());
    }

很多地方都这个,并没有把categories 的subCategories重新设置回去,因为刚刚进入公司,很多出的代码都这样写,经常让我摸不到头脑,我经常就想,如果我没有这样取出来值不是很容易为空值吗,

public class Categories {
    List<String> categories;
    List<SubCategories> subCategories;

    public Categories() {
    }
    public Categories(List<String> categories, List<SubCategories> subCategories) {
        this.categories = categories;
        this.subCategories = subCategories;
    }
    public List<String> getCategories() {
        if (categories == null){
            categories = new ArrayList<>();
        }
        return categories;
    }

    public void setCategories(List<String> categories) {
        this.categories = categories;
    }

    public List<SubCategories> getSubCategories() {
        if (subCategories == null){
            subCategories = new ArrayList<>();
        }
        return subCategories;
    }

    public void setSubCategories(List<SubCategories> subCategories) {
        this.subCategories = subCategories;
    }
}

后面我点进这个类发现破案了,以前经常使用lombok提供的注解,导致直接在取对象的元素出来的时候总是不注意(这个对象经常都是一种集合形式)为空,取出来后经常为空要重新写一个集合在set回去,而不是修改原来的数据。这个巧妙的判空就在于即使我们取到的值为空,保证返回值不为空,好处是确保getSubCategories方法始终返回一个非空的List对象,避免调用者因返回null而导致NullPointerException。逻辑简单清晰,易于理解和维护。通过检查并初始化subCategories,确保只有一个列表实例被所有调用共享,有助于节省资源。这样的写法确实很优雅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值