![](/img/trans.png)
[英]ProGuard: Warning: org.apache.commons.beanutils.BeanMap$2: can't find superclass or interface org.apache.commons.collections.Transformer
[英]Why can't I set a Transformer to a LazyList in Apache Commons?
在apache.commons.collections中,有一个名为MapUtils的类,它具有以下两种方法来定义Map,该Map可以为该地图创建按需对象:
所以我可以使用工厂实例化对象
Factory factory = new Factory() {
public Object create() {
return new Object();
}
}
或转换器根据地图的键实例化新对象
Transformer factory = new Transformer() {
public Object transform(Object mapKey) {
return new Object(mapKey);
}
}
Lists有一个类似的类: ListUtils ,但是该类只有一个带有Factory的方法:
我想像在地图情况下那样转换对象,但使用列表中对象的索引而不是地图中的键。
Transformer factory = new Transformer() {
public Object transform(int index) {
return new Object(index);
}
}
我的问题是为什么没有lazyList(列表列表,Transformer转换器)? apache是否提供其他列表来执行此操作,还是我必须构建自定义实现?
谢谢。
首先,在我看来,您应该将Guava用于此类事情……它充分利用了泛型,并提供了经过深思熟虑,紧凑且明智的API。 它还提供了Lists.transform方法,该方法根据List
中每个位置的元素来转换基础List
。
就是说,我认为通过索引转换List
的转换方法没有多大意义。 考虑到转换将忽略其包含的元素,因此实际的基础List
将完全没有意义……只有其大小才重要。 您能解释一下为什么要这样做吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.