VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Java基础(2)|范型

1、范型优点

1、代码简洁,不用强制转换

2、程序更加健壮(编译时期没有警告,运行时就不会出现ClassCastExpection异常)

3、可读性和稳定性(限定了类型)

2、泛型基础

类上定义的泛型,方法上也可以使用类上声明的泛型只能对非静态成员有效

 
public class ObjectTool<T> {
    private T obj;
    }

创建类时指定类型,使用时会自动转换

 
ObjectTool<String> tool = new 0bjectTool<>();

泛型先定义,后使用

 
//定义泛型方法..
    public <T> void show(T t) {
        System.out.println(t)
    }

类型通配符,如:参数中传递一个list集合,但不确定时什么类型。

 
public void test(List<?> list){}  // ? :任意类型,只能传?所代表的的类型
为什么不用list<Object>? 答:可以传所有类型进去

list<Object> 跟 List<String>毫无关系,仔细品

设定通配符上限

如:参数中传递一个list集合,但只能是(integer,short,byte,double)类型,怎么弄?

 
List<? extends Number>  //子类或者自身

设定通配符下限

 
public TreeSet(Comparator<? super E> comparator) {
        this(new TreeMap<>(comparator));
    }
有什么用?

假若你想比较字符串的大小,你可以传入一个比较器(Comparator<String>),也可以传入Object的比较器(Comparator比较器),

会使代码更加灵活(只要能够比较字符串的大小就行了)

总结

带有子类限定的,可以从泛型读取

带有超类限定的,可以从泛型写入

关于泛型与通配符

 
//使用通配符
public static void test(List<?> list) {}
//使用泛型方法
public <T> void  test2(List<T> t) {}

常用的泛型字符含义

  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • ? - 表示不确定的java类型

一般怎么使用他们呢?

答:

一、泛型:

参数之间有依赖关系

返回值与参数之间有依赖关系

二、通配符

无依赖关系的

泛型擦除:泛型在编译成class文件后,会进行擦除。

应用场景

1、ElasticsearchRepository

2、SpringDataJpa


__EOF__

 
  • 本文作者: 彪哥
  • 本文链接: https://www.cnblogs.com/lishanbiaosMark/p/15915139.html

    
    相关教程