#1.泛型的引入(泛型类)
使用泛型可以指代任意的对象类型。
package Animal;
/**
* Test
* @param args
*/
/**
*
* 定义一个泛型类CC<T>
* @author
*
* @param <T>
*/
class CC<T>{
private T ob;
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public CC(T ob) {
super();
this.ob = ob;
}
}
class TestAnimal {
public void print() {
System.out.println("动物");
}
}
class Dog extends TestAnimal{
public void print() {
System.out.println("Dog");
}
}
class Cat extends TestAnimal{
public void print() {
System.out.println("Cat");
}
}
public class Test {
public static void main(String[] args) {
demo<Dog> demo=new demo<Dog>(new Dog()); //创建泛型
demo<Cat> demo2=new demo<Cat>(new Cat()); //创建泛型
Cat cat=demo2.getOb(); //输出
cat.print(); //输出
Dog dog=demo.getOb();
dog.print();
}
}
#2.限制泛型
限制泛型顾名思义就是对泛型对象类型进行限制。
package Animal;
class demo<T extends TestAnimal>{
private T ob;
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public demo(T ob) {
super();
this.ob = ob;
}
public void print() {
System.out.println("T的类型是="+ob.getClass().getName());
}
}
public class Test2 {
public static void main(String[] args) {
demo<Cat> cDemo=new demo<Cat>(new Cat());
//Cat是TestAnimal中的类型可以使用
Cat cat=cDemo.getOb();
cat.print();
//demo<Integer> iDemo=new demo<Integer>(new Integer()); //Integer不是TestAnimal中的不能使用
}
}
#3.通配符泛型
通配符泛型就是泛型对象作为方法参数传入方法的时候,就用到通配符泛型;
public class Test {
public static void A(fanxing<?> a){
a.print();
}
public static void main(String[] args) {
fanxing<Dog> fx=new fanxing<Dog>(new Dog());
A(fx); //将Dog取回
fanxing<Cat> fx1=new fanxing<Cat>(new Cat());
A(fx1); //将Cat取回
}
}
**#4.泛型方法**
package Fx;
/**
* 泛型方法
* @author
*
*/
public class Main {
public static <T> void f(T b) {
System.out.println("T的类型是"+b.getClass().getName());
}
public static void main(String[] args) {
f(12);
}
}