public static void main(String[] args) {
MyClass2 myClass2 = new MyClass2();
//泛型方法,当你在调用方法时,明确泛型的具体类型
myClass2.show(100);
myClass2.show("abc");
myClass2.show(3.14);
}
public void show() {
}
//public void show(Integer i) {
// // System.out.println(i);
// //}
// //
// //
// //public void show(String abc) {
// // System.out.println(abc);
// //}
// //
// //public void show(Double v) {
// // System.out.println(v);
// //}
//泛型方法
public <T> void show(T t) {
System.out.println(t);
}
public static void main(String[] args) {
//泛型定义在接口上,创建子类对象的时候就得明确泛型具体的数据类型
MyClass<String, Integer> stringIntegerMyClass = new MyClass<>();
Integer abc = stringIntegerMyClass.show("abc");
System.out.println(abc);
System.out.println("--------------------------");
MyInterface<Integer,Integer> my= new MyClass<Integer,Integer>(){
//ctrl+o 重写父类的方法
@Override
public Integer show(Integer integer) {
return 100+integer;
}
};
Integer show = my.show(200);
System.out.println(show);
}
public static void main(String[] args) {
//泛型统配符 ? 统配任意类型
Animal<?> objectAnimal = new Animal<Date>();
//向上限定 右边的泛型只能是他的本身,或者他的父类
Animal<? super Animal> animal = new Animal<Object>();
//向下限定 右边的泛型只能是他的本身,或者他的子类
Animal<? extends Animal> animal2 = new Animal<Dog>();
// boolean addAll (Collection < ? extends E > c)
}
}
class Animal<A>{}
class Dog<A> extends Animal<A>{}
class Cat<A> extends Animal<A>{}