软件构造
文章平均质量分 70
Gravitas
这个作者很懒,什么都没留下…
展开
-
Java防御式拷贝方法小结
为什么要用防御式拷贝在ADT中,常常会有一些Observer方法,用户可以通过这样的方法查看ADT的一些相关属性。用户在获得相关属性后,可能会对这些属性做一些修改,如果我们直接把ADT中的rep返回给用户,那么用户的修改就有可能对ADT产生巨大影响,从而导致程序出现一些意想不到的错误。而使用防御性拷贝就是为了避免类似情况的出现。其实,如果从更广义的角度看,不仅仅是出现返回值时有可能出现表示泄露,其实在构造函数里如果对用户输入的对象不进行有效的拷贝,用户之后的修改其实也可能对你设计的ADT产生影响,这时其原创 2021-07-06 17:03:57 · 826 阅读 · 2 评论 -
如何将Java中的Date类变成immutable类型
想法一直接使用final对Date的对象进行修饰。但是Date是对象数据类型(Object types),当我们对这样的数据类型用final修饰时,它引用的对象是不能改变的,但是它指向的对象的值是可以改变的。final Date date = new Date();date.setYear(2021); // allowed!上面代码是合法的,我们尽管使用了final来修饰Date类型的date对象,我们依然可以调用setYear方法来修改date里有关年份的属性。想法二写一个自己的MyDa原创 2021-07-03 22:28:08 · 244 阅读 · 0 评论 -
关于Java迭代器(Iterator)的思考
Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。在我们使用for(... : ...)去遍历集合中的所有元素时,其实就隐式地使用了迭代器(Iterator)。遍历集合的两种方法通常来说,遍历集合中的元素主要有以下两种方法。//method1List<String> list = ...;for(String str : list) { System.out.println(str);}原创 2021-07-03 12:46:13 · 385 阅读 · 1 评论