java泛型

1 -定义

编译时的类型安全监测机制,也可以把这个数据类型理解成是一种可以传递的参数

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

2 - 泛型定义格式

  • <类型>:表示一种类型的格式

  • <类型1,类型2......>:表示是多种类型的格式,用逗号分割

3 - 使用泛型的好处

  • 把运行期间可能出现的问题,拿到编译期间(错误等级的提升)

  • 避免强制类型转换丢失精度等问题的出现

4 - 泛型类

/**
 * @author Mr.乐
 * @Description 泛型类
 * E  -  Element
 * K  -  Key
 * T  -  Type
 * V  -  Value
 */
public class Generic<T> {
//这个成员变量的类型为T,T的类型由外部指定  
    private T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}
-------------------------------------
/**
 * @author Mr.乐
 * @Description 泛型类测试类
 */
public class Demo01 {
    public static void main(String[] args) {
        Generic<String> strG = new Generic<>();//创建泛型类对象
        strG.setT("我是一个字符串!~");
        System.out.println(strG.getT());

        Generic<Integer> intG = new Generic<>();
        intG.setT(1314);
        System.out.println(intG.getT());
    }
}

5 -泛型方法

/**
 * @author Mr.乐
 * @Description
 */
public class Generic {
    //泛型方法
    /*public <T> void show(T i) {
        System.out.println(i);
    }*/
    //有返回值类型的泛型方法
    public <T> T show(T i) {
        return i;
    }
}
-----------------------------
/**
 * @author Mr.乐
 * @Description
 */
public class Demo02 {
    public static void main(String[] args) {
        Generic g = new Generic();//创建泛型方法类的对象
        System.out.println(g.show(1314));
        g.show("String");
        g.show(3.14f);
        g.show(new Student("Andy",18));
    }
}

6 - 泛型接口

/**
 * @author Mr.乐
 * @Description
 */
public interface Generic <T>{
    void show(T t);
}
----------------------------------
/**
 * @author Mr.乐
 * @Description
 */
public class GenericImpl <T> implements Generic<T>{
    @Override
    public void show(T t) {
        System.out.println("我是实现类中的show方法:" + t);
    }
}
---------------------------------------------------------------------
/**
 * @author Mr.乐
 * @Description
 */
public class Demo03 {
    public static void main(String[] args) {
        GenericImpl<String> strG = new GenericImpl<>();

        strG.show("字符串");

        //通过匿名内部类实现
        new Generic<Integer>() {
            @Override
            public void show(Integer integer) {
                System.out.println("我是匿名内部类的show方法" + integer);
            }
        }.show(1314);
    }
}

7 - 泛型通配符

import java.util.ArrayList;

/**
 * @author Mr.乐
 * @Description  泛型通配符
 */
public class demo04 {
    public static void main(String[] args) {
        //<?>  通配所有  相当于Object
        ArrayList<?> list01 = new ArrayList<Object>();
        ArrayList<?> list02 = new ArrayList<Integer>();//Integer为Object子类
        ArrayList<?> list03 = new ArrayList<Float>();
        ArrayList<?> list04 = new ArrayList<Number>();

        //<? extends Number>  上限  ?仅为Number类及子类
        ArrayList<? extends Number> list05 = new ArrayList<Number>();
        ArrayList<? extends Number> list06 = new ArrayList<Integer>();
        ArrayList<? extends Number> list07 = new ArrayList<Float>();
//        ArrayList<? extends Number> list08 = new ArrayList<String>();

        //<? super Number>   下限   ?仅为Number类及父类
        ArrayList<? super Number> list09 = new ArrayList<Number>();
//        ArrayList<? super Number> list10 = new ArrayList<Integer>();
//        ArrayList<? super Number> list11 = new ArrayList<String>();
        ArrayList<? super Number> list12 = new ArrayList<Object>();
    }
}

8 - 泛型通配符的基本应用

import java.util.ArrayList;

/**
 * @author Mr.乐
 * @Description  泛型通配符的基本应用
 */
public class Demo05 {
    public static void main(String[] args) {
        ArrayList<String> strList = new ArrayList<>();
        show(strList);
//        showUp(strList);
//        showDown(strList);
        ArrayList<Integer> intList = new ArrayList<>();
        show(intList);
        showUp(intList);
//        showDown(intList);
        ArrayList<Number> numList = new ArrayList<>();
        show(numList);
        showUp(numList);
        showDown(numList);
        ArrayList<Object> objList = new ArrayList<>();
        show(objList);
//        showUp(objList);
        showDown(objList);
    }
    //<?>  表示通配所有
    private static void show(ArrayList<?> list){

    }
    //表示上限
    private static void showUp(ArrayList<? extends Number> list){

    }
    //表示下限
    private static void showDown(ArrayList<? super Number> list){

    }
}

总结

        泛型,大家用到最多的就是在集合中,在实际的开发过程中,自己可以使用泛型去简化开发,保证同种类型,能很好的保证代码质量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故离ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值