泛型的定义(3)

说起泛型很多人会想起Map接口,我们来看一下Map的声明

public interface Map<K,V>

不难看出Map接口和我们之前定义的向量类有相似之处。在类/接口的名称后面都跟上了一对尖括号,向量类是,Map接口是<K,V>。
那么我们可以考虑一下泛型的个数是不是也是随意的呢?
看一下如下代码:

class Dimen<K,T>{
	private K name;
	private T x;//向量的x坐标
	private T y;//向量的y坐标
	
	public void setName(K k){
		this.name = k;
	}
	
	public K getName(){
		return this.name;
	}
	
	public void setX(T x){
		this.x = x;		
	}
	public void setY(T y){
		this.y = y;		
	}	
	public T getX(){
		return this.x;
	}
	public T getY(){
		return this.y;
	}
}

这段代码较之前的Dimen类多了一个name属性,其类型是泛型K;x和y的类型依旧是泛型T。
那么为了检验正确性就先把主类写完。

public class DimenTest{
	public static void main(String[]args){
		Dimen<String,Integer> dimen = new Dimen<String,Integer>();		
		dimen.setName("a");
		dimen.setX(5);
		dimen.setY(5);
		System.out.println("向量" + dimen.getName() + "=" + dimen.getX() + "i+" + dimen.getY() + "j");
	}
}

经过编译运行,我们可以得到如下结果:
在这里插入图片描述
通过这个例子我们也可以对泛型提出猜想:在泛型定义时,是不是不限个数。
我们可以利用相似的方法来进行验证这个猜想。

在我们以后的学习或开发中,我们就能够充分利用泛型的两个特点:

  • 泛型不限类型,可以避免向下转型的操作,从而避开了ClassCastException异常
  • 泛型的定义不限个数,我们可以根据自己的需求合理的定义
发布了15 篇原创文章 · 获赞 5 · 访问量 699

猜你喜欢

转载自blog.csdn.net/weixin_46192593/article/details/104808064