java类型通配符_java泛型详解--通配符

通配符>总体说明:

1、表示不限定通配符,通常与集合配合使用。

2、集合类中所用类型,不继承父子关系。如Base是基类,Child为Base的子类,则List 和 List 不具备继承关系,并且二者没有任何关系。

3、 extends T> 称为上线通配符,表示 T类型及其T子类。

4、 super T> 称为下线通配符,表示 T类型及其父类。

无限定通配符>:

1、通常与集合配合使用。

2、集合中的限定类型,表示集合中只能包含一种特定类型。而不限类型则表示不限定任何类型。

一但转换为不限类型,则不可以向集合中增加任何类型数据,只可以查询集合size、判断集合是否为空等与类型无关的集合属性。

3、通常配合 extends T> 和 super T>使用

无限定通配符> 代码示例

package com.booby.generic;

import java.util.ArrayList;

import java.util.List;

/**

* 功能描述: ? 无限定通配符

*

* @author: lizt

* @date: 2020/8/15 23:30

**/

public class GenericQuestionMark {

public static void main(String[] args) {

List stringList = new ArrayList<>();

stringList.add("abc");

//编译报错

stringList.add(123);

List integerList = new ArrayList<>();

//编译报错

integerList.add("abc");

integerList.add(123);

// List> list = new ArrayList<>();

List> list = stringList;

//编译报错

list.add(123);

//编译报错

list.add("abc");

//输出集合的size 是否为空

list.size();

list.isEmpty();

}

}

上线通配符 extends T>:

1、表示一定范围内的类型控制,符合规则的类型是T类型及其T类型的子类

2、表示的集合不可以变动,比如add操作

上线通配符 extends T> 代码示例

package com.booby.generic;

import java.util.ArrayList;

import java.util.List;

/**

* 功能描述: 上线通配符

*

* @author: lizt

* @date: 2020/8/15 23:31

**/

public class GenericUpperBoundary {

public static void main(String[] args) {

List list = new ArrayList<>();

list.add(123);

List extends Number> numberList = list;

System.out.println(numberList.get(0));

// 不可以增加元素

//numberList.add(123L):

}

}

下线通配符 super T>:

1、表示一定范围内的类型控制,符合规则的类型是T类型及其T类型的父类

2、表示的集合既可以增加也可以访问集合元素

下线通配符 super T>代码示例:

package com.booby.generic;

import java.util.ArrayList;

import java.util.List;

/**

* 功能描述: 下线通配符

*

* @author: lizt

* @date: 2020/8/15 23:32

**/

public class GenericLowerBoundary {

public static void main(String[] args) {

List super Number> numberList = new ArrayList<>();

numberList.add(123);

System.out.println(numberList.get(0));

}

}

泛型通配符相关文章:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值