• 泛型


    泛型是一种参数化的集合,它限制了添加进集合的类型。泛型的本质是一种参数化类型。多态也可以看成是泛型的机制。一个类继承了父类,那么就能通过它的父类找到对应的子类,但是不能通过其他类找到具体要找的类。泛型的设计就是希望对象或方法的表达能力刚广泛。

    1、用泛型表示类

    package day09;
    
     
    
    //此处的T可以随便写任意标识,常见的有T、E、K、V等形式的参数用于表示泛型
    
    public class GenericDemo04<T> {
    
        //value这个成员变量的类型为T,T的类型由外部指定
    
        private T value;
    
     
    
        public GenericDemo04(T value) {
    
            this.value = value;
    
        }
    
     
    
        public T getValue() {    //泛型方法getkey的返回值类型是T,T的类型由外部指定
    
            return value;
    
        }
    
     
    
        public void setValue(T value) {
    
            this.value = value;
    
        }
    
     
    
    }

    2、用泛型表示接口

    package day09;
    
     
    
    //定义一个泛型接口
    
    public interface GeneratorDemo<T> {
    
        public T next();
    
    }

    一般泛型接口常用于生成器(generator)中,生成器相当于对象工厂,是一种专门用来创建对象的类。

    3、泛型表示方法

    package day09;
    
     
    
    public class GenericMethods {
    
        public <T> void f(T x) {
    
            System.out.println(x.getClass().getName());
    
        }
    
    }

    4、泛型通配符

    List是泛型类,为了表示各种泛型list的父类可以使用类型通配符,类型通配符使用问号(?)表示,它的元素类型可以匹配任何类型。例如:

     1 package day09;
     2 
     3  
     4 
     5 import java.util.*;
     6 
     7  
     8 
     9 class Generic {
    10 
    11     public static void main(String[] args) {
    12 
    13         List name = new ArrayList<String>();
    14 
    15         List<Integer> age = new ArrayList<Integer>();
    16 
    17         List<Number> number = new ArrayList<Number>();
    18 
    19         name.add("yang");
    20 
    21         age.add(19);
    22 
    23         number.add(90);
    24 
    25         DemoGeneric(name);
    26 
    27         DemoGeneric(age);
    28 
    29         DemoGeneric(number);
    30 
    31  
    32 
    33     }
    34 
    35  
    36 
    37     public static void DemoGeneric(List<?> data) {
    38 
    39         System.out.println("测试一下:" + data.get(0));
    40 
    41     }
    42 
    43  
    44 
    45 }

    运行结果:

     

    上界通配符:<? extends ClassType>该通配符为ClassType的所有子类型。它表示的是任何类型都是ClassType类型的子类。

    下界通配符:<? super ClassType>该通配符为ClassType的所有超类型。它表示的是任何类型的父类都是ClassType

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    GDI绘图1——自定义函数
    GDI绘图1——枚举
    打箱子&地形&鼠标点击移动总结
    使用Playmaker1——基础使用
    图形用户编程工具集比较--转
    Java中抽象类和接口的区别
    myeclipse安装 配置Maven3
    在Ubuntu上安装hadoop2.2.0的一些记录
    Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程
    获得hadoop源码网址
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14406446.html
Copyright © 2020-2023  润新知