Pan*_*hal 6 java utility private-constructor
我扩展了 apache-commons-3 中的类来添加我自己的实用函数,这些函数在其中不可用。例如:
public class CollectionUtils extends org.apache.commons.collections.CollectionUtils
{
/**
* Similar to collection.contains(member) except just doesn't throw NPE when set is null, simply returns false
* @param collection
* @param member
* @return
*/
public static <K> boolean contains(Collection<K> collection,K member)
{
return collection!=null && collection.contains(member);
}
}
Run Code Online (Sandbox Code Playgroud)
这解决了我通过同一个类使用函数和公共函数的目的CollectionUtils。
但是,Apache 在版本 4 中通过在实用程序类中引入私有构造函数来删除可扩展性。这里也有同样的讨论。
现在,如果我升级到版本 4,我的代码就会被破坏。扩展实用程序类以添加自定义/特定实用程序方法的最佳实践是什么?
尽管我投票接近“基于意见”,但我想给你一些意见。
正如您在链接讨论中已经说过的那样,扩展实用程序类首先是一种不好的做法。第 4 版中的更改可能是针对该约定的。
扩展实用程序类(仅使用静态方法)没有任何意义,因为无论如何您都无法覆盖静态方法。但是,您可以隐藏它们。这意味着这可能会因意外行为而意外发生。所以它有风险,没有实际价值。如果您只使用两个实用程序类,它实际上不会使您的代码变得更复杂。甚至还有一个编译器警告称不能直接访问静态方法。
扩展实用程序类以添加自定义/特定实用程序方法的最佳实践是什么?
总结一下:最佳实践不是扩展它们,而是使用第二个自定义实用程序类。
| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |