java泛型<T> T和T的用法

本文详细解析了Java中泛型的使用,特别是<T>T和单独的T的区别。<T>T表示返回值是一个可自定义类型的泛型,而单独的T则用于限制参数类型。通过示例代码展示了如何在方法中应用泛型,以及如何根据传入参数类型动态返回数据。
摘要由CSDN通过智能技术生成

<T> T 和T的区别:T是Type的首字母缩写;<T> T 表示“返回值”是一个泛型,传入什么类型,就返回什么类型;而单独的“T”表示限制传入的参数类型。

<T> T 的用法 

这个<T> T 表示返回值T的类型是泛型,T是一个占位符,用来告诉编译器,这个东西是先给我留着, 等我编译的时候再告诉你是什么类型。

这里的demo只用定义一次,参数类型直接从传递的参数中获取。 

import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();
        //获取string类型
        List<String> array = new ArrayList<String>();
        array.add("test");
        array.add("doub");
        String str = demo.getListFisrt(array);
        System.out.println(str);
        //获取Integer类型
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(31);
        nums.add(32);
        Integer num = demo.getListFisrt(nums);
        System.out.println(num);
    }

    /**
     * 这个<T> T 可以传入任何类型的List
     * 关于参数T
     * 第一个 表示是泛型
     * 第二个 表示返回的是T类型的数据
     * 第三个 限制参数类型为T
     *
     * @param data
     * @return
     */
    private <T> T getListFisrt(List<T> data) {
        if (CollectionUtils.isEmpty(data)) {
            return null;
        }
        return data.get(0);
    }
}

 T 的用法

单独的T表示限制参数的类型。这种用法一般多用于共同操作一个类对象,然后获取里面的集合信息。

对象调用的方法参数类型必须和对象类型保持一致,所以这里传递String和Integer类型的参数到方法中时分别定义对应类型的对象。

import java.util.ArrayList;
import java.util.List;

public class Demo2<T> {

    public static void main(String[] args) {
        //限制T 为String 类型
        Demo2<String> demo = new Demo2<String>();
        List<String> array = new ArrayList<String>();
        array.add("Tom");
        array.add("河南");
        String str = demo.getListFisrt(array);
        System.out.println(str);

        //获取Integer类型
        Demo2<Integer> demo2 = new Demo2<Integer>();
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(12);
        nums.add(13);
        Integer num = demo2.getListFisrt(nums);
        System.out.println(num);
    }

    /**
     * 这个只能传递T类型的数据
     * 返回值 就是Demo<T> 实例化传递的对象类型
     *
     * @param data
     * @return
     */
    private T getListFisrt(List<T> data) {
        if (data == null || data.size() == 0) {
            return null;
        }
        return data.get(0);
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值