一、创建泛型类
/**
* 测试类
* @author LD
*
* @param <T>
*/
public class Student<T> {
private T name;
private T age;
public Student(T name, T age){
this.name = name;
this.age = age;
}
public T getName() {
return name;
}
public T getAge() {
return age;
}
/**
* 根据性别返回不同的值
* @param sex
* @return
*/
public T getUserInfo(int sex){
if(sex == 1){
return name;
}else{
return age;
}
}
public static void main(String[] args) {
Student<String> student = new Student<>("peter", "18");
System.out.println(student.getName()); //peter
System.out.println(student.getAge()); //18
System.out.println(student.getUserInfo(1)); //peter
System.out.println(student.getUserInfo(2)); //18
}
}
二、创建泛型方法
public class TestClass {
public static void main(String[] args) {
/** 不指定泛型的时候 */
int i = TestClass.add(1, 2); // 这两个参数都是Integer,所以T替换为Integer类型
Number f = TestClass.add(1, 1.2);// 这两个参数一个是Integer,另一个是Float,所以取同一父类的最小级,为Number
Object o = TestClass.add(1, "asd");// 这两个参数一个是Integer,另一个是String,所以取同一父类的最小级,为Object
/** 指定泛型的时候 */
int a = TestClass.<Integer>add(1, 2);// 指定了Integer,所以只能为Integer类型或者其子类
int b = TestClass.<Integer>add(1, 2.2);// 编译错误,指定了Integer,不能为Float
Number c = TestClass.<Number>add(1, 2.2); // 指定为Number,所以可以为Integer和Float
}
// 这是一个简单的泛型方法
public static <T> T add(T x, T y) {
return y;
}
}