目录
一、泛型的作用
对集合中的类型做安全约束。 例如,以下代码,泛型为Dog,控制了集合中只能存放Dog类
ArrayList<Dog> array = new ArrayList<Dog>();
二、泛型的说明
1)泛型又称参数化类型,是Jdk5.0出现的新特性,解决数据类型的安全性问题
2)在类声明或实例化时只要指定好需要的具体的类型即可。。
3)Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮
4)泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型。
Java泛型(Generics)是JDK 5.0及以后版本引入的一个新特性,它允许在定义类、接口和方法时使用类型参数(type parameters)。这些类型参数在声明时是不具体的,而在使用时才为它们指定具体的类型。泛型的主要好处是在编译时提供类型安全,减少类型转换的代码,并允许我们编写更加通用和可重用的代码。
三、泛型的例子
泛型类
public class Box<T> {
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}
在这个例子中,Box
是一个泛型类,其中 T
是一个类型参数。你可以使用任何类型来实例化 Box
类,例如:
Box<Integer> integerBox = new Box<>();
integerBox.set(new Integer(10));
Integer value = integerBox.get();
Box<String> stringBox = new Box<>();
stringBox.set("Hello");
String str = stringBox.get();
泛型接口
public interface MyInterface<T> {
void doSomething(T t);
}
你可以实现这个接口,并指定具体的类型参数:
public class MyInterfaceImpl implements MyInterface<String> {
@Override
public void doSomething(String s) {
System.out.println(s);
}
}
泛型方法
public class GenericMethods {
public static <T> T firstElement(T[] array) {
if (array.length > 0) {
return array[0];
} else {
return null;
}
}
}
<T> T
是一个泛型方法的声明部分,其中 <T>
是类型参数的声明,而 T
是该类型参数在方法返回类型或参数列表中的使用。
你可以这样调用泛型方法:
Integer[] intArray = {1, 2, 3, 4, 5};
Integer firstInt = GenericMethods.firstElement(intArray);
String[] strArray = {"Hello", "World"};
String firstStr = GenericMethods.firstElement(strArray);
四、泛型的细节
1. interface List<T>{}, public class HashSet<E>{}.等等说明:T,E只能是引用类型看看下面语句是否正确?:List<Integer> list = new ArrayList<Integer> ();• List<int> list2 = new ArrayList<int>();
2.在指定泛型具体类型后,可以传入该类型或者其子类类型3.泛型使用形式List<Integer> list1 = new ArrayList<Integer>();List<Integer> list2=new ArrayList<>(0;[说明:]
3.如果我们这样写 List list3=new ArrayList(0);默认给它的泛型是[<E>E就是Object]即: