dan*_*niu 2 java arrays generics java-stream
我有以下代码,这是我偶然发现的一个简化版本:
public class Transforming
{
static interface MyInterface<T>
{
void consume(T... toConsume);
}
static abstract class Mapper<T> implements MyInterface<String> {
MyInterface<T> delegate;
public Mapper(MyInterface<T> delegateTo)
{
delegate = delegateTo;
}
public void consume(String... transformFrom)
{
T[] array = (T[]) Arrays.stream(transformFrom)
.map(this::transform)
.toArray(); // can't toArray(T[]::new) here!
delegate.consume(array);
}
protected abstract T transform(String toTransform);
}
}
Run Code Online (Sandbox Code Playgroud)
关于如何将流转换为数组的搜索明显不足,因为此时我没有生成的数组类型,并且Java不允许我创建泛型类型的数组...
我确实理解这个问题,但有关如何清理代码的任何输入?AFAICT,我的选择是
我缺少什么?你最喜欢什么?
我处理这个问题的方法是始终提供两个重载:
一个接受varargs的人
一个接受一个List<>.
除了将数组打包到列表中并调用List<>重载之外,varargs重载永远不会做任何事情.这使事情变得简单.想都不用想.
所以,基本上,我选择的选项是你的第一个选项,"将界面从varargs更改为List",除了你实际上不需要改变它,你可以通过添加一个重载来扩展它.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |