Java泛型

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()+"	"+p.getAge());
		}
		
	}

}

  

以上是关于Java泛型的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

什么意思 在HashMap之前 ? Java中的泛型[重复]

这个嵌套类构造函数片段可以应用于泛型类吗?

201621123037 《Java程序设计》第9周学习总结

Java——泛型

作业09-集合与泛型