• java的泛型


    泛型概述

    先看下面的代码:

    ArrayList al1 = new ArrayList();
    	ArrayList al2 = new ArrayList();
    	
    	al1.add("hello");
    	al1.add("world");	
    	al1.add("abc");
    	al1.add("hello");
    	al1.add("1234");
    	al1.add("abc");
    	al1.add("hello");
    	
    	for(int i = 0;i<al1.size();i++){
    		//获取每一项
    		String s = (String)al1.get(i);
    		if(!al2.contains(s)){
    			al2.add(s);
    		}
    	}
    	for (Object object : al2) {
    		System.out.println(object);
    	}
    

     根据集合的用法来存取数据上面看起来很爽的样子  但是如果我们要往集合存取不一样的类型时  往集合里添加数据很方便但是  等到我们取的时候问题很多  会出现不同的类型安全的问题,为了解决这一问题  我们需要限制一个集合只能存取一种类型   这就是我们所说的泛型

    虽然上面的例子取的时候可以将数据统一成 string类型 需要强转类型    因为默认从集合中取数据时返回的都是Object类型(类的鼻祖 所有的类型都继承Object类型并且里面包含了一个自动向上转型 即任何的对象都可以赋值给一个Object类型的变量 但是有个缺点是 Object类型的变量不能直接调用子类中独有的方法  可以用向下转型解决)

    下面来看使用泛型的代码:

    ArrayList<String> al1 = new ArrayList<>();
    	ArrayList<String> al2 = new ArrayList<>();
    	
    	al1.add("hello");
    	al1.add("world");	
    	al1.add("abc");
    	al1.add("hello");
    	al1.add("1234");
    	al1.add("abc");
    	al1.add("hello");
    	
    	for(int i = 0;i<al1.size();i++){
    		//获取每一项
    		String s = al1.get(i);
    		if(!al2.contains(s)){
    			al2.add(s);
    		}
    	}
    	for (String s : al2) {
    		System.out.println(s);
    	}
    

     总结:

    1.集合默认可以存任意类型的数据,貌似功能十分强大,  存的时候很爽,取得时候问题很多   类型安全问题
    2.解决的思路:限制一个集合中只能存一种类型的数据
    3.泛型技术就可以限制一个集合中只能存一种类型的数据
    4.怎么使用泛型
      ArrayList<String> al=new ArrayList<String>();
    5.使用了泛型后,在取数据的时候根本就不需要进行强制
    6.泛型技术出现在JDK5
    7.在JDK7的时候,推出了一种简化的写法:菱形写法
      ArrayList<String> al=new ArrayList<>();
    8.泛型只支持引用数据类型,对于基本数据类型要用他们的包装类
    9.所有的集合类都支持泛型

    泛型的底层原理

    包括泛型方法、泛型类、泛型接口

    不管是创建泛型方法还是泛型类还是泛型接口都需要遵循以下三点:

    1、声明

    2、使用

    3、赋值类型

    泛型方法:

    泛型类

    泛型接口:

  • 相关阅读:
    计算机网络 其他1
    C++ part9
    C++ part8
    操作系统 part5
    C++ part7
    MyXls导出Excel的各种设置
    C# excel操作
    Castle
    C# Keycode对照表
    IEnumerable.Select和SelectMany的区别
  • 原文地址:https://www.cnblogs.com/nianzhilian/p/8911565.html
Copyright © 2020-2023  润新知