我有多个使用多个Collection参数的方法。
我想让事情更具体,所以我想使用Forwarding Decorator
首先想到的问题是:
如果Forwarding Decorator是正确的路径,那么
到目前为止似乎很好,但我不确定的一件事是如何获得基本集合(在这种情况下为ImmutableSet)?
在下面的代码中,我将ImmutableSet保存为setA。
守则:
接口:
package com.ps.experiment.forwarding;
import java.util.Collection;
public interface ISetA extends Set<String>{}
类别:
package com.ps.experiment.forwarding;
import com.google.common.collect.ForwardingSet;
import com.google.common.collect.ImmutableSet;
public class SetA extends ForwardingSet<String> implements ISetA
{
final ImmutableSet<String> delegate; // backing list
@Override
protected ImmutableSet<String> delegate()
{
return this.delegate;
}
private SetA(final ImmutableSet<String> strings)
{
this.delegate = strings;
}
public static ISetA of(final ImmutableSet<String> strings)
{
return new SetA(strings);
}
}
答案 0 :(得分:1)
您编写的代码是正确的方法。如果您想访问后端收藏集,只需制作delegate()
public
而不是protected
。