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