带有一个参数的Java通用接口实际上有两个

时间:2015-04-29 07:13:08

标签: java interface

我最近发现了与此类似的java代码:

public interface DemoInterface<T> extends Serializable
{
    <V> void demoMethod(Collection<V> someValues, SomeType<V, T> moreValues);
}

由于我已经阅读了一些关于接口的建议,并且从未发现过这样的情况,我在这里问:接口语句只提到<T><V>是什么意思?

如果您知道答案,请耐心等待,并举例说明如何使用此界面以及界面和demoMethod的实现。

谢谢。

2 个答案:

答案 0 :(得分:1)

V是一个额外的泛型类型参数,仅适用于demoMethod,与适用于此接口的所有方法的T不同。

答案 1 :(得分:1)

我只是举个例子:

DemoInterface<Type> demo = new DemoInterface<>() {
 <V> void demoMethod(Collection<V> someValues, SomeType<V, Type> moreValues) {
  Type type = new Type();
  foreach(V value: someValues) {
   Type subtype = moreValues.doSomething(value);
   type.concat(subtype);
  }
  System.out.printf("result: %s%n", type); 
 }
};

SomeType<ValueA, Type> someA = new SomeType<>();
SomeType<ValueB, Type> someB = new SomeType<>();
List<ValueA> listA = new Arraylist<>(); // add some elements
List<ValueB> listA = new Arraylist<>(); // add some elements

demo.demoMethod(listA, someA);    
demo.demoMethod(listB, someB);
相关问题