Java泛型
package com.qf.demo01; import java.util.ArrayList; import java.util.Collection; import java.util.zip.CRC32; public class Test1Generics { public static void main(String[] args) { //1.不适用泛型 Collection c1 = new ArrayList(); c1.add("abc");//String-->Object c1.add(100);//int->Integer-->Object //for-each遍历 for(Object obj:c1){ if(obj instanceof String){ String s = (String) obj;//自己手动的向下转型 System.out.println(s); } } System.out.println("----------------------"); //2.使用泛型 Collection<String> c2 = new ArrayList<>(); c2.add("aaa");//String-->String c2.add("bbb"); c2.add("ccc"); c2.add("123");//String System.out.println(c2); for(String s:c2){ System.out.println(s); } // Collection<int> c3 = new ArrayList<>();//报错,不能明目张胆写基本类型作为泛型 Collection<Integer> c3 = new ArrayList<>(); c3.add(100);//int-->Integer,自动装箱 c3.add(200); // c3.add("123");//报错,不允许,,泛型Integer,就只能存储Integer的对象。。不能存储String等其他的类型了 for(int i:c3){//自动拆箱 System.out.println(i); } // Collection<Object> c4 = new ArrayList<String>();//必须前后一样 //课间练习:创建一个集合容器,声明泛型为Person,存储3个人的对象,然后使用for-each遍历输出。 } }
package com.qf.demo01; import java.util.ArrayList; import java.util.Collection; class Person{ private String name; private int age; @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } 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 Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } } public class Test2Generics { public static void main(String[] args) { //课间练习:创建一个集合容器,声明泛型为Person,存储3个人的对象,然后使用for-each遍历输出。 Collection<Person> c1 = new ArrayList<Person>(); Person p1 = new Person("王二狗", 18); Person p2 = new Person(); p2.setName("李小花"); p2.setAge(17); c1.add(p1);//p1 的地址 c1.add(p2);//p2的地址 c1.add(new Person("铁柱", 17));//匿名对象的地址 //equals():Object,Person类重写 System.out.println(c1.contains(p1));//判断c1中是否包含了p1 System.out.println(c1.contains(new Person("王二狗", 18)));//true System.out.println(c1.contains("王二狗"));// for(Person p:c1){ // System.out.println(p); System.out.println(p.getName()+"\t"+p.getAge()); } } }