第十三章 枚举类型和泛型

13.2.2定义泛型类
Object类为最上层的父类,很多程序员为了让程序更为通用,设计程序的时候通常使用传入的值与返回的值都已Object类型为主。当需要使用这些实例的时候,必须正确地将该实例转换为原来的实例,否则在运行是会发生ClassCastException异常

为了预防这种问题 java提供了泛型机制 
类名 <T>

其中T是泛型地名称 , 代表了某一种类型。开发者在创建该类对象时 需要制定T代表了具体哪种类型,如果不指定的话 T则采用了Object类型

如以下代码所示

package 第十三章;
 
public class Book <T>{
private T booklnfo;
public Book(T booklnfo) {//参数为类型参地构造方法
	this.booklnfo =booklnfo;//给消息赋值
}
public T getBooklnfo() {
	return booklnfo;
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Book<String>bookName = new  Book<String>("《java从入门到退学》");
		//创建String类型的书名
		Book<String>bookAuthor = new  Book<String>("明日科技");
		//创建String类型的作者
		Book<Double>bookPrice = new  Book<Double>(69.8);	
		//创建Double类型的价格对象
		Book<Boolean>hasSource = new  Book<Boolean>(true);
		//创建boolean类型判断是否赋值源代码
		System.out.println("书名:"+bookName.getBooklnfo());//然后依次输出
		System.out.println("作业:"+bookAuthor.getBooklnfo());
		System.out.println("价格:"+bookPrice.getBooklnfo());
		System.out.println("是否附赠源码:"+hasSource.getBooklnfo());
	}
 
}

代码图 以及运行结果图

代码中一共new了四个对象  两个 String类型 一个double类型 一个boolean类型   依次定义 然后输出    使用泛型定义额类在生命该类对象时  可以根据不同地需求指定<T>真正地类型 ,而是在使用类中的方法传递或返回 数据类型时将不再进行类型转换操作,而是使用在生命泛型类对象是“<>”符号中设置数据类型

13.2.3 泛型的常规用法

1. 在定义泛型类时,可以声明多个类型 代码如下

class MyClass<T1,T2>{}

其T1,T2是可以背定义的类型

这样的话既可以一下实例化多个类型  代码如下

MyClass<Boolean,Float> m = new MyClass <Boolean,Float>();

2.  定义泛型类 时声明数组类型  代码如下

package 第十三章;
 
public class ArrayClass <T>{
private T[]array;//创建泛型的数组v
public T[]getArray(){//使用get方法来读取
	return array;//返回array
}
public void steArray(T[]array) {//使用set方法
	this.array=array;//this关键字给array赋值
}
public static void main (String[]args) {
	ArrayClass<String>demo=new  ArrayClass<String>();//创建泛型为String类型的独享
	String value[]= {"成员1","成员2","成员3","成员4","成员5",};//添加数据
	demo.steArray(value);
	String array[] = demo.getArray();//使用get方法读取读取然后一次遍历输出
	for(int i = 0;i<array.length;i++) {//循环遍历出数组中的数据
		System.out.println(array[i]);
	}
}
}

代码图 以及运行结果图

3.集合类声明容器的元素

JDK中的集合接口,集合类都被定义了泛型,其中List<E>的泛型E实际上就是element元素的首字母Map<K,V>的泛型 K和V就是key键和value键的首字母。常用的被泛型化的集合类如下

                                           表13.2常用的被泛型化的集合类

集合类                 泛型定义
ArrayListArrayList<E>
HashMapHashMap<K,V>
HashSetHashSet<E>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值