我刚开始尝试装饰器。我还没有看到的一件事是不可变转发装饰器。我正在处理的示例代码在这里
似乎我可以为装饰器指定一个 ImmutableSet,但如果 ImmutableSet 是 ForwardingSet 的“委托”,则没有编译时警告。
我是否需要扩展 ForwardingSet 并创建 ForwardingImmutableSet 然后将其用作我的装饰器?
有没有人试过这个?
任何意见将是有益的。
使用上面提供的代码链接试试这个:
public void test1()
{
final ImmutableSet<String> stringsA = ImmutableSet.of("A1", "A2", "A3");
final ISetA a = SetA.of(stringsA);
a.add("A0"); // Run-time error
stringsA.add("A0"); // Compile time warning, Run-time error
}
我只想查看“a.add("A0");”的编译时警告
当然我可以选择创建一个更受限制的接口,我可能只是从那里开始,但我想知道我是否必须做一个 ForwardingImmutableSet 我从哪里开始?