我是靠谱客的博主 紧张小鸽子,最近开发中收集的这篇文章主要介绍警告:不要编写返回可变对象引用的访问器方法(getter),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

警告:不要编写返回可变对象引用的访问器方法(getter)

import java.util.Date;
/*
不要编写返回可变对象引用的访问器方法(getter)
 */
public class Demo {

    public static void main(String[] args) {
        DemoTest demoTest = new DemoTest();
        System.out.println(demoTest.getHireDay());

        Date d = demoTest.getHireDay();
//        Date d = (Date) demoTest.getHireDay().clone();//改进方式一
        d.setTime(10);

        //再次调用该方法,发现值已经改变,破坏了封装特性
        System.out.println(demoTest.getHireDay());
    }
}

class DemoTest {
    //初始化hireDay对象变量,防止用默认值null调用方法,从而出现空指针异常
    private Date hireDay = new Date();

    public Date getHireDay() {
        return hireDay;
//        return (Date) hireDay.clone();//改进方法二
    }
}

理解: 虽然 DemoTest 类中的对象变量(成员变量)hireDay 被 private 修饰,并且 DemoTest 类中只提供了 hireDay 变量的访问器方法 getter ,并没有提供 hireDay 变量的修改器方法 setter ,看似其他类中创建的 DemoTest 对象只能通过 DemoTest 提供的访问器方法 getter 来访问 DemoTest 类中的 hireDay 变量,其他类无法对变量 hireDay 进行修改,但是由于 Date 类本身提供了 setTime 方法可以对变量 hireDay 进行修改,因此破坏了 Java 的封装特性。修改方法是返回变量的克隆值。

最后

以上就是紧张小鸽子为你收集整理的警告:不要编写返回可变对象引用的访问器方法(getter)的全部内容,希望文章能够帮你解决警告:不要编写返回可变对象引用的访问器方法(getter)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部