0
我有多个使用多个Collection参数的方法。使用Guava的转发装饰器创建特定的集合
我想使事情变得更加具体,所以我想用转发装饰
想到的是第一个问题:
- 它是一个矫枉过正使用转发Decoartor,我失去了一个 更简单的东西,我的意思是这很简单,多亏了番石榴 但仍然?
如果转发装饰才是正途然后
它似乎罚款,到目前为止,但有一两件事我不知道是如何找基地集合(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);
}
}
我有一个后续问题。假设我需要7个这样的特定的接口和类让我们假设所有的ImmutableSet,除了复制代码以及更改类和接口名称外,是否还有更好的选项。原因是所有7种东西都使用相同的集合类型,但我想确保一个错误的参数不被接受,因此7个不同的接口和类。 – 2013-02-28 16:25:22