【问题标题】:Is there any standard 'gettable' Java interface?是否有任何标准的“可获取”Java 接口?
【发布时间】:2013-10-18 08:48:10
【问题描述】:

我需要将几个容器暴露给不同的组件,而我真正需要的只是:

interface Gettable {
    public String get(String key);
}

是否有任何标准 Java (SE) 接口尽可能接近此接口,可以不引入另一个但将暴露的容器行为限制在所需的最低限度?

更新: 选择的解决方案是自定义界面。我真的很想尽可能保持通用性。

【问题讨论】:

标签: java interface


【解决方案1】:

另一个自定义界面没有问题。

public interface Gettable<K, V> {
    public V get(K key);
}

【讨论】:

  • 读起来像“get table”。
【解决方案2】:

我认为最接近的标准接口是java.util.Map。请注意,Map 的许多方法都是可选的(可能会引发 UnsupportedOperationException)。

【讨论】:

  • Map 除了这个方法之外还有很多的包袱,它有非常明确的契约,并且使用它来实现那个单一的方法是对接口的滥用在我看来。
  • 是和不是。所需的方法主要涵盖诸如“参数有效吗?”之类的内容。 (包含,isEmpty)和迭代“所有这些你可以获得的东西”的方法(大小,键/值/条目集合)。但是,我当然明白你的意思,这就是为什么我提到“最接近的标准接口”。
  • 好吧,可能这是个选项,但我真的不喜欢它的get(Object)签名。
【解决方案3】:

Guava 几乎就像一个 Java 标准,它们有 Function (javadoc),其中包含您正在寻找的签名

T apply(F input)

返回将此函数应用于输入的结果。

【讨论】:

  • 不幸的是,签名不允许参数。所以这几乎正是他想要的:-)
猜你喜欢
  • 2023-03-03
  • 2014-08-24
  • 2015-01-12
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多