zoukankan      html  css  js  c++  java
  • Javase之集合泛型

    集合泛型知识

    泛型

    是一种把类型明确工作推迟到创建对象或者调用方法的时候才明确的特殊类型。

    也称参数化类型,把类型当成参数传递。

    在jdk1.5中出现。一般来说经常在集合中使用。

    • 格式

      <数据类型>

      此处的数据类型只能是引用类型

    • 好处

      1.把运行期间的问题提前到编译时期。

      2.避免了强制类型转换。

      3.优化了程序,解决了警告。

    • 泛型产生原因

      早期,Java中使用Object来表示所有类型。向上转型没有问题,但是在向下转型的时候隐含了类型转换问题。

      也即是说,这样的程序是不安全的。所以在Java的JDK5以后引入了泛型,提高了程序安全性。

    • 泛型的应用

      • 泛型类

        把泛型定义在类中

        格式:public class 类名<泛型类型1,…>(表明可定义多个泛型类型,每个类型之间用逗号隔开。)

        public  class objectTool<T>{
            private T obj;
            
            public T getObj(){
                return obj;
            }
            
            public void setObj(){
                this.obj = obj;
            }
        }
        
      • 泛型方法

        把泛型定义在方法上

        格式:public <泛型类型> 返回类型 方法名(泛型类型);

        public <T> void show(T t){
                System.out.println(t);
            }
        
      • 泛型接口

        把泛型定义在接口上

        格式:public interface 接口名<泛型类型1,…>

        interface Inter<T>{
            public abstract void show(T t);
        }
        
        //实现接口
        //1.知道要用什么类型
        //class InterImpl implements Inter<String>{
        //
        //    @Override
        //    public void show(String t) {
        //        System.out.println(t);
        //    }
        //}
        
        //2.不知道要用什么类型
        class InterImpl<T> implements Inter<T>{
        
            @Override
            public void show(T t) {
                System.out.println(t);
            }
        }
        
    • 泛型高级之通配符

      泛型如果明确的写出,则前后必须一致

      class Animal {
      
      }
      
      class Dog extends Animal{
      
      }
      
      class Cat extends Animal{
          
      }
      

      • 表示任意类型,如果没有明确那么就是Object及Java任意类

        Collection<?> c1 = new ArrayList<Object>();
        Collection<?> c2 = new ArrayList<Animal>();
        Collection<?> c3 = new ArrayList<Dog>();
        Collection<?> c4 = new ArrayList<Cat>();
        

      • ?extends E

        向下限定,E及其子类

        Collection<? extends Animal> a1 = new ArrayList<Animal>();
        Collection<? extends Animal> a2 = new ArrayList<Dog>();
        Collection<? extends Animal> a3 = new ArrayList<Cat>();
        

      • ?super E

        向上限定,E及其父类

        Collection<? super Animal> b1 = new ArrayList<Animal>();
        Collection<? super Animal> b2 = new ArrayList<Object>();
        

  • 相关阅读:
    php的form中元素name属性相同时的取值问题
    从FCN到DeepLab
    论文学习:Fully Convolutional Networks for Semantic Segmentation
    笔记:基于DCNN的图像语义分割综述
    论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
    概念:弱监督学习
    FCN小小实战
    (2)Deep Learning之线性单元和梯度下降
    (1)Deep Learning之感知器
    深度学习实验系列(1)
  • 原文地址:https://www.cnblogs.com/wf614/p/11673850.html
Copyright © 2011-2022 走看看