public class Test {
private Integer a;
public Test(Integer a) {
super();
this.a = a;
}
public Integer getA() {
return a;
}
public void setA(Integer a) {
this.a = a;
}
public void print() {
System.out.println("a的类型:"+ a.getClass().getName());
}
}
public class Test2 {
private String a;
public Test2(String a) {
super();
this.a = a;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public void print() {
System.out.println("a的类型:"+ a.getClass().getName());
}
}
向上转型有疑问
将代码一致性改为jre1.5后编译成功
泛型
/**
* 定义泛型类
* 使用泛型可以指代任意对象类型
* @author Gavin
*
* @param <T>
*/
public class CC<T> {
private T ob;
public CC(T ob) {
super();
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
/**
* 打印T的类型
*/
public void print() {
System.out.println("T的实际类型:"+ob.getClass().getName());
}
}
public class TestTest {
public static void main(String[] args) {
CC<Integer> cc = new CC<Integer>(1);
cc.print();
int icc = cc.getOb();
System.out.println(icc);
CC<String> cc2 = new CC<String>("我是String");
cc2.print();
String scc = cc2.getOb();
System.out.println(scc);
}
}
T的实际类型:java.lang.Integer
1
T的实际类型:java.lang.String
我是String
限制泛型
//对泛型类进行限制,比如只能是Animal类或者它的子类
public class CC<T extends Animal> {
private T ob;
public CC(T ob) {
super();
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
CC<Dog> cc = new CC<Dog>(new Dog());
通配符泛型、泛型方法未细看