gpt4 book ai didi

java - 使用 Guava 的转发装饰器创建特定集合

转载 作者:行者123 更新时间:2023-12-01 14:48:29 25 4
gpt4 key购买 nike

我有多种使用多个 Collection 参数的方法。

我想让事情变得更具体,所以我想使用转发装饰器

我想到的第一个问题是:

  • 使用转发装饰器是否太过分了,我是否缺少一个 更简单的东西,我的意思是这非常简单,感谢 Guava 但还是?

如果转发装饰器是正确的路径,那么

到目前为止看起来不错,但我不确定的一件事是如何取回基本集合(在本例中为 ImmutableSet)?

  1. 我是否只创建一个返回的新方法(在接口(interface)和类中)“代表” ? (如果是的话,什么是一个好的方法名称?)
  2. 或者还有更多吗?

在下面的代码中,我将 ImmutableSet 保存为 setA。

代码:

界面:

package com.ps.experiment.forwarding;

import java.util.Collection;

public interface ISetA extends Set<String>{}

类(class):

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);
}
}

最佳答案

您编写的代码是正确的方法。如果要访问后端集合,只需将 delegate() 设置为 public 而不是 protected

关于java - 使用 Guava 的转发装饰器创建特定集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com