【发布时间】:2019-05-24 22:48:55
【问题描述】:
我愿意将字符串添加到只允许包含字符串的列表中。调用add(String s)后,我想修改字符串(例如:添加日期),然后将修改后的字符串存储到列表中。但是,不能添加其他数据类型。
我的第一个想法是从一个简单的 ArrayList 扩展而来。不幸的是,我最终不得不修改大约 7-12 个函数。
你的建议是什么?
谢谢
【问题讨论】:
-
class B extends ArrayList<String>。你几乎肯定不实际上想要这个。 -
我建议你实现一个接口:
class B implements List<String>. -
我想要这个。因为我必须重写 add-method,所以我想将最近的 Date 添加到每个 String 的位置需要添加为 String...所有其他方法都应该像 ArrayList 一样工作...您会建议什么?
-
您宁愿实现
List<String>并使用ArrayList<String>作为成员变量,适配器模式。扩展ArrayList<String>听起来很吓人。 -
如果您打算更改每个添加的元素,您需要覆盖的不仅仅是
add方法。您还需要覆盖 addAll、set、replaceAll、subList 和 listIterator。更好的选择是创建您自己的类,该类不扩展任何内容(除了 java.lang.Object),保留私有 List,并提供一些公共方法来读取和修改它。提供 List 的防御性副本的公共方法可能是个好主意。