泛型参数类型
1.开发者指定类型
2.编译器可以根据声明推断出类型
下面我们来看看最基本的正确的写法和错误的写法,我自己就遇到过,就把这次的心得记录下来!
public class Person { private String name; private int age; private int sex; public Person() { } public Person(String name) { this.name = name; this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; } public Person(String name, int age, int sex) { this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", sex=" + sex + '}'; } }
public class Staff extends Person { private String job; public Staff() { super(); } public Staff(String name, String job) { super(name); this.job = job; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } @Override public String toString() { return "Staff{" + "job='" + job + '\'' + '}'; } }
import java.util.ArrayList; public class Test { public static void main(String[] ages) { /** * 错误的使用方式 * 类型变量必须一样,否则IDE会直接进行报错 */ ArrayList<Person> arrays = new ArrayList<Staff>(); /** * 1.泛型的正确使用方式 */ ArrayList<Person> arrayList = new ArrayList<Person>(); Person person = new Person(); person.setAge(18); person.setName("张三"); person.setSex(1); arrayList.add(person); setList(arrayList); /** * 2.泛型的正确使用方式 */ ArrayList<Person> list = new ArrayList<>(); Staff staff = new Staff(); staff.setAge(20); staff.setName("李四"); staff.setSex(2); arrayList.add(staff); setList(list); } private static void setList(ArrayList<Person> list) { for (Person person : list) { System.out.println(person.toString()); } } }