创建一个泛型类Generic1<T>,它只有一个方法,将接受一个T类型的参数。创建第二个泛型类Generic2<T>,它也只有一个方法,将返回类型T的参数。编写一个泛型方法,它具有一个调用第一个泛型类的方法的逆变参数。编写第二个泛型方法,它具有一个调用第二个泛型类的方法的协变参数。
根据语义可知,要写2个泛型方法,一个有逆变参数 super,另一个有协变参数 extends,那么,请问如何写?
请不要用集合类好么?
请在方法1,2中直接调用Generic1<T>,Generic2<T>的方法好么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
有难度,这个貌似应该用scala来做######Java中有协变和逆变这个说法吗?能不能说的通俗点######
import typeinfo.pets.*;
import java.util.*;
class Generic1<T> {
public void method(T t) {
System.out.println(t.toString());
}
}
class Generic2<T> {
T t;
Generic2(T t){ this.t = t; }
public T method() {
return t;
}
}
public class Question28 {
public <T> void method1(Generic1<? super T> gen, T t) {
gen.method(t);
}
public <T> void method2(Generic2<? extends T> gen, T t) {
gen.method();
}
public static void main(String[] args) {
Question28 q = new Question28();
q.method1(new Generic1<Pet>(),new Dog());
q.method2(new Generic2<Dog>(new Dog()),new Pet());
}
}/* Output:
Dog
*////:~
这是我的代码,不一定对,“具有一个调用第一个泛型类的方法的逆变参数”这句话不知道怎么理解,咱们共同探讨。