Contents
18.1. 泛型的使用¶
racing_cycle.java
package com.a51work.cn;
import java.util.ArrayList;
/**
* ArrayList集合默认接收的元素类型为Object类型,通过泛型对这个ArrayList集合里的元素的类型进行了设置,
* 使得ArrayList集合默认的元素类型为String类型,在存入和取出新元素的时候就不用转型了。
* 使用泛型, 正如上面代码所示, 能使代码看起来灵活; 容易管理, 不容易产生错误。
* 使用泛型能使代码量减少, 能产生很多公共代码。
* 使用泛型在代码编译的时候能进行类型的检查并自动转换, 使代码的运行效率得到提高。
* 使用泛型在编译进行自动转换的时候出现了错误, 会进行错误提示。
* 使用泛型的时候参数只能是类的类型, 不能是简单类型。
* 使用泛型的时候参数可以有多个。
* 使用泛型的时候参数也能继承别的类型。
*/
public class racing_cycle {
// String类型的成员变量n
public String n = "100";
public static void main(String[] args) {
// 实例化类
racing_cycle h1 = new racing_cycle();
// 创建一个ArrayList技巧和对象
ArrayList<String> a1 = new ArrayList<String>();
// 向集合h1里添加元素,把n的值100添加进去
a1.add(h1.n);
// 取出数据转型赋给s
String s= a1.get(0);
// 打印并显示结果
System.out.println(s);
}
}
OverClass.java
package com.a51work.cn;
// 定义泛型类
public class OverClass<T> {
//定义泛型成员变量
private T over;
//设置getxx()方法
public T getOver() {
return over;
}
// 设置setxx()方法
public void setOver(T over) {
this.over = over;
}
public static void main(String[] args) {
// 实例化一个Boolean型的对象
OverClass<Boolean> over1 = new OverClass<Boolean>();
//实例化一个Float型的对象
OverClass<Float> over2 = new OverClass<Float>();
// 不需要进行类型转换
over1.setOver(true);
over2.setOver(12.3f);
//不需要进行类型转换
Boolean b = over1.getOver();
Float f = over2.getOver();
System.out.println(b);
System.out.println(f);
}
}
ArrayClass.java
package com.a51work.cn;
/**
* 定义泛型数组时,声明数组类型
* @param <T>
*/
public class ArrayClass<T> {
private T[] array; // 定义泛型数组
//设置setxx方法()为成员数组赋值
public void setArray(T[] array) {
this.array = array;
}
//获取成员数组
public T[] getArray() {
return array;
}
public static void main(String[] args) {
ArrayClass<String> a = new ArrayClass<String>();
String[] array = {"成员1", "成员2", "成员3", "成员4", "成员5"};
a.setArray(array);
for (int i = 0; i < a.getArray().length; i++) {
// 调用getArray()方法返回数组中的值
System.out.println(a.getArray()[i]);
}
}
}