J2SE堂上实例2.6Java中的泛型

Java中的泛型

泛型的英文:Generic Type

基本精神:数据类型参数化

集合框架中没有使用泛型和使用泛型的比较

没使用泛型和使用泛型的区别:

//不使用泛型的话类型一开始就不确定这样是不好的
 List myList= new LinkedList();//放进去时就没确定类型
 myList.add(100);
 int x=(int)myList.get(0);//要强转
 System.out.println(x);

//使用泛型的目的就是为了确定类型,这样不容易出现错误	
 ListmyList=new LinkedList();
 myList.add(100);
 int x=myList.get(0);

泛型是可以自己定义的

测试类1:

package javastudy;

import java.util.LinkedList;
import java.util.List;

public class MyTest1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//实例化T
		MyTest2 mt=new MyTest2();
		mt.setvar("wubaihui");
		mt.print();
		
	}

}
class MyTest2{
	T var;
	void setvar(T var) {
		this.var=var;
	}
	T getvar() 
	{
		return var;
	}
	void print()
	{
		System.out.println("I love xiaoyu!");
	}
	
	
}
  

输出结果:

J2SE堂上实例2.6Java中的泛型_第1张图片

 

测试类2:

package javastudy;

import java.util.LinkedList;
import java.util.List;

public class MyTest1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyTest2 mt=new MyTest2();
		Person p=new Person("Wanghong",19);
		mt.setvar(p);
		mt.print();
	}

}
class MyTest2{
	T var;
	void setvar(T var) {
		this.var=var;
	}
	T getvar() 
	{
		return var;
	}
	void print()
	{
		System.out.println(var);
	}
	
	
}

class Person {
	
	String name;
	int age;
	Person(String name,int age)
	{
		this.name=name;
		this.age=age;
	}
	
	
}

 

输出结果:

未重写Person类的to String()方法

重写了的

J2SE堂上实例2.6Java中的泛型_第2张图片

 

泛型的规则和限制:

通过上述例子,我们简单理解了泛型的含义。在使用泛型时,请注意其使用规则和限制如下:

1、泛型的参数类型只能是引用类型,而不可以是简单类型。比如就不行了

2、可以声明对个泛型参数类型,比如,同时还可以嵌套泛型,例如.>

3、泛型的参数类型可以使用extends语句,例如

4、泛型的参数类型可以使用super语句,例如

5、泛型还可以使用通配符,例如

你可能感兴趣的:(Java课后总结,J2SE,Java,泛型)