How to extend Collectors class
为什么在Java 8中EDCOX1×0类是最终的?我想在我自己的类MyCollectors中扩展collectors类。在这里,我将添加Collectors类中不存在的其他方法。
- 嘿,我的问题不是在Java中使用最终类。请回答我的问题。我想将collectors类扩展到mycollectors类。
- stackoverflow.com/questions/5181578/…无法解决我的问题
- 普拉萨特,我读过你的问题。简单、快速的回答是:你不能简单地扩展Collectors。答案越长,你的问题对社区的价值就越小,因为"为什么最后一堂课不能有孩子?"(本例中继承自收集器的类)在前面的问题中进行了解释。下面的ERAN解决方案应该让您满意,以理解为什么初始逻辑存在缺陷。
- 没有什么能阻止您创建名为MyCollectors的类,并向它添加Collector工厂方法。Collectors子类应该有什么好处?
Collectors是最终的,因为它只包含static实用方法。它不能被实例化(它的构造函数是private),因此对它进行子类化是没有意义的。
您可以独立于Collectors创建自己的MyCollectors类。或者,如果您想通过您的MyCollectors访问Collectors方法,您可以创建MyCollectors类中所有Collectors静态方法的包装器。
- 是的,我想通过myCollector方法访问Collectors方法。包装器意味着要我将所有方法从Collectors类复制到MyCollectors类吗?
- @它意味着复制方法签名并让myCollector方法调用相应的Collector方法。不过,我不会这么做,因为这对我来说似乎毫无意义。
- 如果他们在下一次更新中在Collectors类中添加了另一个新方法,会发生什么?我需要在myCollector类中这样做吗?如果是,那我的问题还有其他的解决办法吗?
- @就像我说的,我不会做那种包装。只需同时使用这两个类(Collectors和MyCollectors)。您不需要一个类来包含所有收集器实用程序方法。
- 好的,我将在MyCollector类中单独使用我的方法。
如果您需要实现您自己的收集器,那么它不是关于子类化Collectors实用程序类,而是关于创建实现Collector接口的类。正如上面的Eran所回答的那样
You can create your own MyCollectors class independent of Collectors. Or if you want to access Collectors methods via your MyCollectors, you can create wrappers of all the Collectors static methods within your MyCollectors class.
号
您可以使用返回自己的Collector实现的方法创建自己的类。