Java泛型是jvm中的语法糖,是提供给javac编译器使用的,在编译时会进行“泛型擦除”,生成的class文件将不再带有泛型信息。
泛型设计原则:只要在编译时期没有出现警告,那么运行就不会出现ClasscastException异常。
泛型的意义:泛型是为了在编译器,检查参数类型是否正确。简单的来讲就是可以有效的解决或减少关于类型方面的异常,为了类型的安全。
1.泛型类:在实际的开发中有一些类需要使用多种类型,或者类型无法确定。而泛型类只有在用户实例化才把类型确定,极其轻便和严谨。
public class Tools<T> {
private T params;
public T get() {
return params;
}
public void set(T t) {
params=t;
}
public static <T> void show(T t) {
System.out.print(t);
}
}
public <T> void test(List list) {}
public static void main(String[] arg) {
//实例化的同时给定了类型
Tools<String> tool=new Tools<>();
tool.set("你成功啦");
}
2.泛型方法:当你只是某一个方法需要泛型时,如果使用泛型类就有点小题大做了。
public class Demo{
public <T> void show(T t){
System.out.print(t);
}}
public static void main (String[] arg){
Demo demo=new Demo();
demo.show("1");
demo.show(235);
}
3.泛型接口:
public interface IBook<T> {
public void showBookNumbers(T t);
}
a.子类不明确泛型接口:
public class BookImpl<T> implements IBook<T>{
@Override
public void showBookNumbers(T t) {
// TODO Auto-generated method stub
}
}
b.子类明确泛型接口
public class BookImpl implements IBook<String>{
@Override
public void showBookNumbers(String t) {
// TODO Auto-generated method stub
}
}
4.PESC法则:推荐博文:https://www.cnblogs.com/dldrjyy13102/p/8297045.html