Android泛型的基础概念,T和?的使用方法和区别

Android泛型的基础概念,T和?的使用方法和区别


上一篇,Android命名规范,开发规范,注意点整理(一):
https://blog.csdn.net/weixin_40234977/article/details/79921768

泛型类型

T:表示确定的类型,最常用的泛型表示方法。
? :表示不确定的类型,类似于通配符。
K:一般用于键值对中的 –>键

//HashMap<k,V> map=new HashMap<>();//当然不能直接这样用
HashMap<String,Object> map=new HashMap<>();

v:一般用于键值对中的 –>值
E:表示枚举。

泛型类

注意点:
1.泛型通常用<>和一个大写字母表示,而一般常用的就是 <T>、<?>、<? extends Object>、<? super Object>四种方式
2.不建议使用<G>、<Q>这种奇葩定义方式。
3.泛型不能使用基本数据类型,如int,double等,只能使用它们的容器类如IntegerDouble。因为java的泛型是用类型擦除实现的,在运行阶段用的都是Object,而基本数据类型不是继承自Object,也就无法在泛型中使用。
//自定义泛型类
public class Demo<T> {

    private T mObject;

    public T getmObject() {
        return mObject;
    }

    public void setmObject(T mObject) {
        this.mObject = mObject;
    }

    public Demo(T mObject) {
        this.mObject = mObject;
    }
}

泛型方法

    <T>:表示声明为泛型方法,必须申明。  T可以替换为其他大写字母(不推荐)
    //泛型方法1
    public <T> void show(T t) {
        Log.e("TAG", t + "");
    }
    //泛型方法2
    public <T> void outPut(T... args) {
        for (int i = 0; i < args.length; i++) {
            Log.e("TAG", "" + args);
        }
    }
    public void mTest() {
        //测试方法1
        show("我是一段文字");//String类型
        show(1234);//int类型
        show(false);//boolean类型
        show(234.3F);//float类型
        show(32443.545454D);//double类型
        //测试方法2
        outPut("我是一段文字", 234, 3554F, 4, true, false, "我是一段文字");
    }

泛型T和?的区别

范围
  T:表示同一种类型。
  ?:表示任意类型。
写法
  T:<T>
  ?:<?>、<? extends Object>、<? super Object>
注意点1
  <? extends XX>:表示XX类型,和XX的子类型。
  <? super XX>:表示XX类型,和XX的父类型
注意点2
  class<T>:实例化的时候,需要指定具体类型。
  class<?>:可以表示所有类型。
示例方法
public <T> Class<?> SetData(Class<?> arg) {
        //<T>
        ArrayList<T> list1 = new ArrayList<>();
        //<?>
        ArrayList<?> list2 = new ArrayList<>();
        ArrayList<? extends Object> list3 = new ArrayList<>();
        ArrayList<? super Object> list4 = new ArrayList<>();
        return arg;
    }

结语

实际使用技巧参考: https://www.jianshu.com/p/0f6800ded3da
一篇泛型好文参考: https://www.cnblogs.com/dazhao/p/8289989.html
泛型的使用有效的降低了代码的冗余,减少了重复无用的代码,使代码的可读性更高,更简洁,同时也缩短了搬砖工人的重复劳动时间。博主原创不易,货干又没有掺杂水分,如果你觉得还行,请打赏一二:
这里写图片描述

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值