[英]Library that includes Unmodifiable extensions of java.util.Properties, sql.Date, util.Date, etc
首先,我要说的是,不变性是人们可以做的最好的事情之一,可以提高可靠性,简化性并给系统带来信心。 不再担心防御性副本或价值观的变化等对我而言是一件好事。
就是说,尽管Collections库的unmodifiableXXX方法很简单,但却是呈现只读collections的简单方法,这是一件好事,而且可以确保内容安全。 它并不能解决宇宙中的所有问题,但却是一件好事。
毕竟,我追求的是一个试图修复其他疣的图书馆。
只读属性
可变属性
也会对Stack重复进行Properties练习。 重复练习java.util.Date,java.sql.Date等。
请不要告诉我写我自己的,因为是的,我可以,但是我希望这无聊的事情已经完成了:)
我认为不存在这样的库。
但是,我不会告诉您写自己的东西,因为我认为这会浪费时间:
对于java.util.Date
情况,请使用其中基本日期/时间对象不可变的Joda时间API。
对于不可变的Properties
案例,将Properties
对象包装在不可修改的Map
。
对于可变Properties
,请使用HashMap<String, String>
代替Properties
。
该java.sql.Date
情况下是不切实际的,因为的JDBC方法, 返回来解决java.sql.Date
实例。
考虑一下。 数百万的Java程序员已经苦苦挣扎多年, 而没有这些util类的只读版本。 显然,没有人认为值得花时间来创建/发布这样的库。 这告诉你什么吗? 也许,这不是一个真正的问题吗? 还是有更好的解决方案(例如Joda time)。
例如,当我编写一个将Properties对象传递给某个方法的方法时,我会看一下该方法的API。 它是说还是暗示它修改了/可能修改了对象? 我关心的? 除非答案是对这两个都是“是”,否则我不需要制作防御性副本。 如果两者的答案都是“是”,那么我确实需要进行防御性的复制……而一个不变的对象不是答案。
现在,如果从今天开始从头开始重新设计Java,那么处理可变对象和不可变对象的更好方法将成为我的首要任务。 但这不是。
但是,您可以自由地不同意我并实施自己的库。
当然,您总是可以在对象上调用clone
。
但是,如果您确实想要只读属性 ,那么使用NetBeans这样的IDE来扩展对象确实很容易。 我可以在10分钟内完成。 迭代器等。 如果您不使用IDE,建议您学习两种最常见的NetBeans或Eclipse。 我使用NetBeans。
如果使用Eclipse,我唯一不知道的是是否可以在Eclipse中创建委托方法。
这是NetBeans的说明。
private final Properties backend;
public MyProperties(Properties backend){this.backend=backend;}
throw new UnsupportedOperationException("unmodifiable Properties");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.