例如,java.io.File只是一个具体的类.我的替代品支持解析Windows快捷方式.我需要预处理构造函数参数来解析可能的.lnk文件,因为无法访问在抽象路径上执行规范化/规范化/解析的FileSystem对象.预处理的需要排除了纯子类 - 在调用super(...)之前不能进行预处理,而File是不可变的.所以我扩展File并使用委托,覆盖所有File的构造函数和方法(在所有构造函数中调用super("")).
这很好用,但显然不理想 - 如果File更改,我将不会覆盖任何新方法或构造函数,这将公开底层的空抽象路径名.我错过了一些明显的东西吗 似乎应该有一个更简单/更好的方法.
在具体的情况下,你建议我认为你最好选择一个单独的工厂类来做出关于规范化/规范化/解决的决定.
然后你可以让文件成为文件.简单.