Java泛型概述
- 泛型在Java中被称之为”JAVA类型”,简称G。泛型是JavaSE平台1.5版本增加的新特性。泛型在Java中不是一种数据类型,是一种在编译时期的特殊语法,它能够让JVM识别从而确定在应用泛型的操作中体现泛型特点,帮助程序员在开发中从泛型中获得更高效和更安全数据的管理操作。
- 泛型由于不是一种Java的数据类型所以在运行时,JVM将使用擦除法将泛型描述还原成未应用泛型语法的规则进行执行。
- 泛型基本语法:
<T>
- 泛型能够在代码书写过程中帮助程序员提高效率和数据类型安全
- 泛型能够在编译阶段确定数据类型是否符合要求,规避错误发生
- 泛型能够避免数据对象强制类型转换操作
- 泛型也能够支持在动态下确定数据类型
集合中使用泛型
- 集合中,使用泛型可以规范集合中存储的数据类型,遍历集合时可以免于强制类型转换
public static void main(String[] args) {
List<String> strs= new ArrayList<String>();
strs.add("12");
strs.add("tt");
for(String str : strs){
System.out.println(str);
}
}
代码分析:
List<Integer> intList = new ArrayList<Integer>();
List<Number> numList = intList ;
解决方案
List<?> numList = intList;
public class Test {
public static void main(String[] args) {
List<Integer> intList = new ArrayList<Integer>();
List<String> numList = new ArrayList<String>();
List<?> list = intList;
list = numList;
}
}
java类使用泛型
public class Test<T> {
private T t;
public String getClassName(T t){
return t.getClass().getName();
}
public static void main(String[] args) {
Test<String> ts = new Test<String>();
System.out.println(ts.getClassName(new String("www")));
}
}
- 好处是可以在调用类时,能动态确定 T 的类型,更为灵活
接口中使用泛型
public interface Base<T> {
void save(T t);
}
public class BaseImp<T> implements Base<T>{
@Override
public void save(T t) {
}
}