?通配符,也可以理解为占位符
泛型的限定:
? extends E: 可以接收E类型或者E类型的子型;上限。
泛型的限定:
? extends E: 可以接收E类型或者E类型的子型;上限。
? super E: 可以接收E类型或者E类型的父类型;下限。
调用多类型元素泛型例子
package GenericPakage;
public class GenericDemo2 {
public static void main(String[] args)
{
Demo demo = new Demo();
demo.show("胡平燕");
demo.show(55232);
}
}
class Demo
{
public <Q> void show(String s)
{
System.out.println(s);
}
public <Q> void show(int s)
{
System.out.println(s);
}
}
接口泛型例子
package GenericPakage;
public class GenericDemo2 {
public static void main(String[] args)
{
Demo demo = new Demo();
demo.show("胡平燕");
}
}
interface Inter<T>
{
public abstract void show(T t);
}
class Demo implements Inter<String>
{
public void show(String s)
{
System.out.println(s);
}
}
//泛型限定例子
package GenericPakage;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class GenericDemo4 {
public static void main(String[] args)
{
TreeSet<Worker> p = new TreeSet<Worker>(new Comp()/*比较器*/);
p.add(new Worker("4"));
p.add(new Worker("2"));
p.add(new Worker("8"));
TreeSet<Student2> s = new TreeSet<Student2>(new Comp()/*比较器*/);
s.add(new Student2("6--"));
s.add(new Student2("3--"));
s.add(new Student2("7--"));
printColl(p);
printColl(s);
}
public static void printColl(TreeSet<? extends Person2> al)
{
for(Iterator<? extends Person2> it = al.iterator(); it.hasNext();)
{
System.out.println(it.next().getName());
}
}
}
class Comp implements Comparator<Person2>
{
@Override
public int compare(Person2 p1, Person2 p2) {
return p1.getName().compareTo(p2.getName());
}
}
class Person2
{
private String name;
Person2(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
class Student2 extends Person2
{
Student2(String name)
{
super(name);
}
}
class Worker extends Person2
{
Worker(String name)
{
super(name);
}
}
package GenericPakage;
public class GenericDemo2 {
public static void main(String[] args)
{
Demo demo = new Demo();
demo.show("胡平燕");
Demo.show(55);
}
}
class Demo
{
public void show(String s)
{
System.out.println(s);
}
public static <Q> void show(int s)
{
System.out.println(s);
}
}