我有一个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>() {...}));


(披露:我为番石榴做出了贡献。)

09-27 15:07