我最近发现了与此类似的java代码:
public interface DemoInterface<T> extends Serializable
{
<V> void demoMethod(Collection<V> someValues, SomeType<V, T> moreValues);
}
由于我已经阅读了一些关于接口的建议,并且从未发现过这样的情况,我在这里问:接口语句只提到<T>
。 <V>
是什么意思?
如果您知道答案,请耐心等待,并举例说明如何使用此界面以及界面和demoMethod的实现。
谢谢。
答案 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);