java基础之泛型

  • 泛型的基本应用

1.泛型类定义

public class Point<T> {
    private T t;

    Point(T t) {
        this.t = t;
    }
    private void setT(T t) {
        this.t = t;
    }

    private T getT() {
        return this.t;
    }
}

2.泛型对象的创建

public class DemoTest {
    public static void main(String[] args) {
        Point<Integer> point= new Point<Integer>(123);
    }
}

注意:

  1. 在创建泛型对象时,类型不能是基本的数据类型
  2. 在创建泛型对象时,最好知道对象的类型,避免出现泛型的安全警告

 

  • 泛型的通配符、受限泛型的上限和下限

通配符(?)

public static void fun1(Point<?> t) {
     System.out.println(t.toString());
}

 通过在方法的参数中添加?通配符。使得这个方法的参数可以传递这个泛型的各种类型的对象

受限泛型的上限(extends)

public static void fun2(Point<? extends Number> t) {
        System.out.println(t.toString());
}

通过extends 关键字,可以设置泛型的参数上限,传入的参数类型必须是Number或者Number的类。否则会报错。

受限泛型的下限(super)

public static void fun3(Point<? super Number> t) {
        System.out.println(t.toString());
}

通过super关键字,可以设置泛型的参数下限,传入的参数类型必须是Number或者Number的类。否则会报错。

 

  • 泛型与子类继承的限制

在泛型中,子类的泛型类是不能使用父类的泛型类型接收的。既:无法使用向上转型。

 

  • 泛型接口

泛型接口的定义

public interface Info<T> {
}

泛型接口的实现

1.在实现类上声明泛型类型

public class InfoImpl<T> implements Info<T> {
    private T t;

    public T getVar() {
        return this.t;
    }
}

2.在实现类上直接指定具体的类型

public class InfoImpl implements Info<String> {
    public String getVar() {
        return "123123";
    }
}

 

  • 泛型方法

定义泛型方法

public <T> T fun4(T t){
        return t;
    }

注意:泛型方法可以在泛型类中,也可以在普通的类中。

通过泛型方法返回泛型类实例

public <T extends Number> Point<T> fun(T t) {
        Point<T> point = new Point<T>(t);
        return point;
    }

使用泛型统一传入的参数类型

public static <T> void add(Info<T> t1,Info<T> t2){
        System.out.println(t1.getVar() + "" + t2.getVar());
    }

泛型数组

public class DemoArr {
    public static void main(String[] args) {
        String strArr[] = fun1("s1", "s2", "s3");
        fun2(strArr);
    }

    public static <T> T[] fun1(T... arg) {
        return arg;
    }

    public static <T> void fun2(T arr[]) {
        for (T t : arr) {
            System.out.println(t.toString());
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值