我有一个List<ParentObject>
,其中ParentObject
定义为:
public class ParentObject
{
ChildObject child1;
// and other stuff...
}
我想通过构造包装器列表将该
List<ParentObject>
作为不可修改的List<ChildObject>
公开给其他人:public class WrapperList implements List<ChildObject>
{
List<ParentObject> delegateList;
public WrapperList( List<ParentObject> delegateList )
{
this.delegateList = delegateList;
}
// fill in java.util.List methods...
}
我可以采用这种方法并使它起作用,但这似乎是一个可能已经普遍解决的问题。是否有一个现有的图书馆提供像我提议的列表包装器?大概我将定义一个翻译方法,告诉包装器列表如何从给定的
ChildObject
中检索ParentObject
。基本问题是:这是一种好方法吗,还是有一个已经提供了类似内容的库(Guava或Apache Commons Collections等)?
最佳答案
用番石榴做这个最简单的方法是
return Collections.unmodifiableList(Lists.transform(parentList,
new Function<ParentObject, ChildObject>() {...}));
(披露:我为番石榴做出了贡献。)