Java 泛型

泛型

JDK 1.5前用Object,之后才引入泛型的概念

定义:泛型将数据类型参数化****。在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法**。

  • 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型

泛型实例化

必须在类名后指明类型,相当于把“T”赋值,指定T代表的类型

注意:

1.指定泛型时不能使用基本数据类型,用包装类替代

2.静态方法中不能使用类的泛型

3.异常类不能是泛型的

4.不能在try-catch中使用泛型

泛型类

public class GenericDemo5 {
    public static void main(String args[]){
        Point<String> p = new Point<String>();
        p.setVar("it");
        System.out.println(p.getVar().length());// 2
    }
}
class Point<T>{// 此处可以随便写标识符号,T是type的简称
    private T var;
    public T getVar(){
        return var;
    }
    public void setVar(T var){// 设置的类型也由外部决定
        this.var = var;
    }
}

泛型接口

interface Info<T>{
    public T getVar();
}
class InfoImpl<T> implements Info<T>{//定义泛型接口的子类  
    private T var;// 定义属性  
    public InfoImpl(T var){
        this.setVar(var);
    }
    public void setVar(T var){
        this.var = var;
    }
    public T getVar(){
        return this.var;
    }
}
public class GenericDemo6 {
    public static void main(String arsg[]){
        Info<String> i = null;//声明接口对象  
        i = new InfoImpl<String>("汤姆") ;//通过子类实例化对象  
        System.out.println("内容:" + i.getVar()) ;
    }
}

泛型方法

方法中出现了泛型的结构。

注意:

1.泛型方法所属的类是不是泛型类都没有关系

2.泛型方法可以是静态的,因为泛型参数在调用方法时确定,并非在实例化类时确定。

为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。

通配符

类A是类B的父类,G<A>G<B>是无关的,二者共同的父类是G<?>

? 即通配符

对于定义了通配符的对象不能继续添加数据(null除外);可以读取其中数据,类型为Object。

  • 通配符指定上限 上限extends:使用时指定的类型必须是继承某个类,或者实现某个接口,即<=
  • 通配符指定下限 下限super:使用时指定的类型不能小于操作的类,即>=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值