创建一个泛型类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 *////:~
这是我的代码,不一定对,“具有一个调用第一个泛型类的方法的逆变参数”这句话不知道怎么理解,咱们共同探讨。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。