Java泛型 继承中类型变量的关系

通过例子来看泛型类在继承中过程中类型变量应该具有怎样的关系。

首先给出几个辅助类:

package generic;public class Animal { }

package generic;public class Person extends Animal {private String name;public Person(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person [name=" + name + "]";}public Integer printAndReturn() {return 1;}}package generic;public class Student extends Person {private String studentNumber;public Student(String name, String studentNumber) {super(name);this.studentNumber = studentNumber;}public String getStudentNumber() {return studentNumber;}public void setStudentNumber(String studentNumber) {this.studentNumber = studentNumber;}@Overridepublic String toString() {return "Student [studentNumber=" + studentNumber + ", name="+ getName() + "]";}}package generic;public class Building {private String name;public Building(String name) {super();this.name = name;}}package generic;/** * @version 1.00 2004-05-10 * @author Cay Horstmann */public class Pair<T extends Person> { private T first; private T second;public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; }public T getFirst() { return first; } public T getSecond() { return second; }public void setFirst(T newValue) { first = newValue; } public void setSecond(T newValue) { second = newValue; }}

1.子类的类型变量表示的范围必须与父类一样或者是父类的子集

package generic;public class PariSon<T extends Person> extends Pair<T> {}或public class PariSon<T extends Student> extends Pair<T> {}2.当父类用具体类型代替类型变量时,,具体变量必须是类型变量表示的范围内的一个元素package generic;public class PariSon extends Pair<Person> {}或package generic;public class PariSon extends Pair<Student> {}

世俗的纷扰,生活的琐碎使人精疲力尽,

Java泛型 继承中类型变量的关系

相关文章:

你感兴趣的文章:

标签云: