柯侧耳倾听者 - 云代码空间
—— 翱翔在Java世界的海洋之上
Java泛型(2学时)
一、实验目的与要求
1. 熟练掌握泛型
2. 深入泛型
3. 类型通配符
4. 泛型方法
5. 擦除和转换
二、实验原理
增加泛型支持的集合,完全可以记住集合中元素的类型,并可以在编译时检查集合中元素的类型,如果试图向集合中添加不满足类型的对象,编译器会提示错误,增加泛型后的集合,可以使代码更加简洁,程序更健壮,除此之外,java泛型还增强了枚举类,反射等方面的功能。
三、预习与准备
1. 熟练掌握泛型
2. 深入泛型
3. 类型通配符
4. 泛型方法
5. 擦除和转换
四、实验内容
1. 熟练掌握泛型
2. 深入泛型
3.类型通配符
4. 泛型方法
5. 擦除和转换
五、实验过程
1. 熟练掌握泛型
package ke04;
import java.util.*;
public class DiamondTest
{
public static void main(String[] args)
{
List<String> books = new ArrayList<>();
books.add("疯狂Java讲义");
books.add("疯狂Android讲义");
System.out.println(books);
List<String> schools = new ArrayList<>();
schools.add("斜月三星洞");
schools.add("西天取经路");
System.out.println(schools);
}
}
2. 深入泛型
package ke04;
public class Apple<T> {
private T info;
public Apple(){}
public Apple(T info){
this.info=info;
}
public void setInfo(T info){
this.info = info;
}
public T getInfo(){
return this.info;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Apple<String> a1 = new Apple<>("苹果");
System.out.println(a1.getInfo());
Apple<Double> a2 = new Apple<>(5.67);
System.out.println(a2.getInfo());
}
}
Package ke04;
public class A1 extends Apple<String>
{
public String getInfo()
{
return "子类" + super.getInfo();
}
public Object getInfo()
{
return "子类";
}
}
3. 类型通配符
package ke04;
public class Apple<T extends Number>
{
T col;
public static void main(String[] args)
{
Apple<Integer> ai = new Apple<>();
Apple<Double> ad = new Apple<>();
Apple<String> as = new Apple<>();
}
}
4. 泛型方法
package ke04;
class MyClass<E>
{
public <T> MyClass(T t)
{
System.out.println("t参数的值为:" + t);
}
}
public class GenericDiamondTest
{
public static void main(String[] args)
{
MyClass<String> mc1 = new MyClass<>(5);
MyClass<String> mc2 = new <Integer> MyClass<String>(5);
}
}
package ke04;
import java.util.*;
public class GenericMethodTest
{
static <T> void fromArrayToCollection(T[] a, Collection<T> c)
{
for (T o : a)
{
c.add(o);
}
}
public static void main(String[] args)
{
Object[] oa = new Object[100];
Collection<Object> co = new ArrayList<>();
fromArrayToCollection(oa, co);
String[] sa = new String[100];
Collection<String> cs = new ArrayList<>();
fromArrayToCollection(sa, cs);
fromArrayToCollection(sa, co);
Integer[] ia = new Integer[100];
Float[] fa = new Float[100];
Number[] na = new Number[100];
Collection<Number> cn = new ArrayList<>();
fromArrayToCollection(ia, cn);
fromArrayToCollection(fa, cn);
fromArrayToCollection(na, cn);
fromArrayToCollection(na, co);
}
}
5. 擦除和转换
package ke04;
class Apple<T extends Number>
{
T size;
public Apple()
{
}
public Apple(T size)
{
this.size = size;
}
public void setSize(T size)
{
this.size = size;
}
public T getSize()
{
return this.size;
}
}
public class ErasureTest
{
public static void main(String[] args)
{
Apple<Integer> a = new Apple<>(6);
Integer as = a.getSize();
Apple b = a;
Number size1 = b.getSize();
Integer size2 = (Integer) b.getSize();
}
}
六、实验效果
1.熟练掌握泛型
2.深入泛型
3.类型通配符
4.泛型方法
5. 擦除和转换
七、实验总结与体会
通过这次课的学习,初步掌握了java泛型的基本用法和一些常用的方法,也发现了自身的一些问题,比如不注重细节,导致程序无法运行,同时也发现要与同学进行交流与合作,及时发现问题并解决问题,也使自己了解到自身的不足,所以在今后的学习中,要更加认真学习,并多与同学和老师交流,这样能够更好的学好Java,同时我们要多敲代码,只有这样,我们才能熟悉代码,做到熟能生巧,才能更好的学好java,敲好java代码。