Java学习笔记之泛型

泛型(一种未知的数据类型)

泛型可以看作是一个变量,用来接收数据类型,eg. E:Element元素(未知的
数据类型)

注意: 泛型的标志是那对尖括号,里面的泛型接收值可自定义

定义含有泛型的类与方法

定义含有泛型的类:
	格式:
		class 类名<泛型> {
		}

定义含有泛型的方法:泛型定义在修饰符与返回值类型之间
	格式:
	 	修饰符 <泛型> 返回值类型 方法名(参数列表(可以使用泛型)){
			//方法体
		}

泛型使用的利弊

使用泛型
	利:
		1.避免了类型转换的麻烦,存储的只能是一种类型
		2.把运行期的异常(代码运行之后会抛出的异常),提前到了编译期(写代码的时候报错)
	弊:
		1.泛型接受的数据类型是什么,就只能存储什么类型的数据

不适用泛型:
	利:
		集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据
	弊:
		不安全,会引发异常

定义和使用含有泛型的接口

含有泛型的接口,第一种使用方式:
	定义接口的实现类,实现接口,指定接口的泛型,eg.
	public interface Iterator<E> {
		E next();
	}
		Scanner类实现了Iterator接口,并指定接口的泛型为String,所以重写的方法next()的泛型默认为String
	public final class Scanner implements Interator<String> {
		public String next( ){
		}	
	}

第二种使用方式:接口使用什么泛型,实现类就使用什么泛型,类跟着接口走。
			即创建了一个含有泛型的类,在创建对象的时候确定泛型的类型,eg.
		public interface List<E>{
			boolean add(E e);
			E get(int index);
		}
		public class ArraysList<E> implements List<E> {
			public boolean add(E e);
			public E get(int index);
		}

泛型通配符:

<?>:代表任意的泛型

使用方式: 不能用来创建对象使用,只能作为方法的参数使用,即用来接收泛型数据
注意事项: 泛型没有继承的概念

	public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("aaa");
        list1.add("bbb");

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(123);
        list2.add(456);

        printArray(list1);
        printArray(list2);
    }

    public static void printArray(ArrayList<?> list){
    
    	/*for(Object item:list){
            System.out.println(item);
        }*/
        
        Iterator<?> temp = list.iterator();
        while(temp.hasNext()){
            Object next = temp.next();
            System.out.println(next);
        }
    }

泛型的上下限限定

泛型的上限限定:<? extends E> 代表使用的泛型只能是E类型的子类/本身
泛型的下限限定:<? super E> 代表使用的泛型只能是E类型的父类/本身

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值