![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 70
Gravitas
这个作者很懒,什么都没留下…
展开
-
Java防御式拷贝方法小结
为什么要用防御式拷贝 在ADT中,常常会有一些Observer方法,用户可以通过这样的方法查看ADT的一些相关属性。用户在获得相关属性后,可能会对这些属性做一些修改,如果我们直接把ADT中的rep返回给用户,那么用户的修改就有可能对ADT产生巨大影响,从而导致程序出现一些意想不到的错误。而使用防御性拷贝就是为了避免类似情况的出现。 其实,如果从更广义的角度看,不仅仅是出现返回值时有可能出现表示泄露,其实在构造函数里如果对用户输入的对象不进行有效的拷贝,用户之后的修改其实也可能对你设计的ADT产生影响,这时其原创 2021-07-06 17:03:57 · 801 阅读 · 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 · 224 阅读 · 0 评论 -
关于Java迭代器(Iterator)的思考
Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。 在我们使用 for(... : ...) 去遍历集合中的所有元素时,其实就隐式地使用了迭代器(Iterator)。 遍历集合的两种方法 通常来说,遍历集合中的元素主要有以下两种方法。 //method1 List<String> list = ...; for(String str : list) { System.out.println(str); }原创 2021-07-03 12:46:13 · 364 阅读 · 1 评论