java创建泛型

来源:互联网 发布:淘宝网男士加厚衬衣 编辑:程序博客网 时间:2024/06/04 18:46

一、创建泛型类

/** * 测试类 * @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()); //peterSystem.out.println(student.getAge());  //18System.out.println(student.getUserInfo(1)); //peterSystem.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,所以取同一父类的最小级,为NumberObject 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,不能为FloatNumber c = TestClass.<Number>add(1, 2.2); // 指定为Number,所以可以为Integer和Float}// 这是一个简单的泛型方法public static <T> T add(T x, T y) {return y;}}