package com.openwaf.test.basic;
public class MethodArgumentTest {
static interface Inf{}
static class One<E extends Inf > implements Inf{
public <T extends One> T get(T k){
return k;
}
}
static class Two<E extends Inf> extends One<E>{ }
public static void test(){
One o=new One<Inf>();
Two t=new Two<One>();
o.<Two>get(t);
}
}
以上代码仅用于测试目的。恕我直言,它应该编译没有任何问题,但java编译器说
MethodArgumentTest.java:15: get(com.openwaf.test.basic.MethodArgumentTest.One)in com.openwaf.test.basic.MethodArgumentTest.One无法应用于 (com.openwaf.test.basic.MethodArgumentTest.Two)
o.get(T);
1错误
有人可以帮帮我吗?
答案 0 :(得分:1)
好的,正如你所说这只是为了测试我不会问这个代码有什么用处。以下编译但仍会产生警告。你没有足够的定义泛型:
public class MethodArgumentTest {
static interface Inf {
}
static class One<E extends Inf> implements Inf {
public <T extends One<E>> T get(T k) {
return k;
}
}
static class Two<E extends Inf> extends One<E> {
}
public static void test() {
One<Inf> o = new One<Inf>();
Two<One<Inf>> t = new Two<One<Inf>>();
o.<Two> get(t); /* unchecked warning */
}
}
答案 1 :(得分:0)
我认为你需要做的是
Two tPrime= o.get(t);