Java 如何扩展收集器类
为什么Java 如何扩展收集器类,java,java-8,java-stream,collectors,Java,Java 8,Java Stream,Collectors,为什么收集器类在Java8中是最终类?我想在我自己的类中扩展Collectors类MyCollectors。在那里,我将添加收集器类中不存在的其他方法。收集器是最终的,因为它只包含静态实用方法。它不能被实例化(它的构造函数是私有的),因此对它进行子分类没有意义 您可以独立于收集器创建自己的MyCollectors类。 或者,如果您想通过MyCollectors访问收集器方法,您可以在MyCollectors类中创建所有收集器静态方法的包装器。如果您需要实现自己的收集器,则不需要对收集器实用程序类
收集器
类在Java8中是最终类?我想在我自己的类中扩展Collectors类MyCollectors
。在那里,我将添加收集器
类中不存在的其他方法。收集器
是最终的,因为它只包含静态
实用方法。它不能被实例化(它的构造函数是私有的
),因此对它进行子分类没有意义
您可以独立于收集器创建自己的MyCollectors
类。
或者,如果您想通过MyCollectors
访问收集器
方法,您可以在MyCollectors
类中创建所有收集器
静态方法的包装器。如果您需要实现自己的收集器,则不需要对收集器
实用程序类进行子类化,但是关于创建实现收集器
接口的类。正如上面Eran所回答的
您可以独立于收集器创建自己的MyCollectors类。或者,如果希望通过MyCollectors访问收集器方法,可以在MyCollectors类中创建所有收集器静态方法的包装器
您可以使用返回自己的收集器实现的方法创建自己的类
是的,我想通过MyCollectors方法访问收集器方法。Wrappers的意思是要我将所有方法从Collectors类复制到MyCollectors类吗?@Prasath的意思是复制方法签名并让MyCollectors方法调用相应的Collectors方法。但我不会这么做,因为这对我来说似乎毫无意义。如果他们在下一次更新中在收集器类中添加了另一个新方法,会发生什么?我需要在MyCollectors课上做同样的事情吗?如果是的话,那么我的问题还有其他解决方案吗?正如我所说的,我不会那么做。只需同时使用这两个类(收集器
和MyCollectors
)。您不需要一个类来包含所有收集器实用程序方法。好的,我将在MyCollectors类中单独保留我的方法。嘿,我的问题不是在java中使用final类。请仔细检查我的问题。我想将Collectors类扩展到MyCollectors类。不解决我的问题普拉萨,我已经看过你的问题了。简单而快速的回答是:您根本无法扩展收集器
。较长的答案是,您的问题对社区几乎没有价值,因为“为什么最终类不能有任何子类?”的解释(在本例中是从收集器继承的类)在前面提到过。下面的Eran解决方案应该可以让您满意地理解初始逻辑有缺陷的原因。没有任何东西可以阻止您创建名为MyCollectors
的类,并向其添加Collector
工厂方法。子类化收集器应该有什么好处?