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

Java generic interface with one parameter has actually two

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

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

因为我已经阅读了一些关于接口的建议,但从未发现过这样的情况,所以我在这里问:接口声明只提到了 <T><V> 是什么意思?

如果您知道答案,请耐心并举例说明如何使用此接口以及接口和演示方法的实现。

谢谢。

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

我只是举个例子:

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