Java 泛型T

转载自:https://blog.csdn.net/yelllowcong/article/details/78537149

<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> TT的两种方法实现

<T> T 用法

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

package com.yellowcong.test;

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

import org.apache.poi.ss.formula.functions.T;

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);

        //获取nums类型
        List<Integer> nums = new ArrayList<Integer>();
        nums.add(12);
        nums.add(13);

        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 (data == null || data.size() == 0) {
            return null;
        }
        return data.get(0);
    }

}

T用法

返回值,直接写T表示限制参数的类型,这种方法一般多用于共同操作一个类对象,然后获取里面的集合信息啥的。

package com.yellowcong.test;

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>();

        //获取string类型
        List<String> array = new ArrayList<String>();
        array.add("test");
        array.add("doub");
        String str = demo.getListFisrt(array);
        System.out.println(str);

        //获取Integer类型 T 为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
    评论
Java泛型`T`是一种类型安全机制,它允许你在创建对象、数组以及处理集合等数据结构时指定具体的类型。这可以防止将不兼容的数据类型赋值给变量,并减少了需要使用`Object`作为类型的情况。 ### 使用Java泛型的基本示例 #### 创建泛型类 ```java public class GenericBox<T> { private T item; public GenericBox(T item) { this.item = item; } // 提供访问和设置item的方法 public T getItem() { return item; } public void setItem(T item) { this.item = item; } } ``` 在这个例子中,`<T>`代表的是泛型参数,你可以将它替换为任意有效的Java类型名。例如: ```java GenericBox<String> stringBox = new GenericBox<>("Hello"); System.out.println(stringBox.getItem()); // 输出 "Hello" GenericBox<Integer> intBox = new GenericBox<>(42); System.out.println(intBox.getItem()); // 输出 42 ``` #### 使用泛型方法 泛型也可以用于方法声明,提供了一种类型安全的方式来操作不同类型的数据。 ```java import java.util.List; public class SafePrint { public static <T extends Comparable<T>> void safePrint(List<T> list) { for (T element : list) { System.out.println(element); } } public static void main(String[] args) { List<String> stringList = Arrays.asList("apple", "banana", "cherry"); safePrint(stringList); // 可以直接打印字符串列表 List<Integer> integerList = Arrays.asList(1, 2, 3); safePrint(integerList); // 同样可以直接打印整数列表 } } ``` 在这段代码中,`safePrint`方法接收一个实现了`Comparable`接口的泛型类型的列表,并能够安全地遍历并打印出其中的所有元素,无论它们是什么类型。 ### Java泛型的优势 - **类型安全**:避免了运行时类型转换错误。 - **简洁性**:不需要使用`Object`作为泛型参数,简化了代码编写和理解。 - **灵活性**:通过指定不同的泛型类型参数,可以适应多种需求场景。 ### 关联问题: 1. 在哪些情况下应该使用Java泛型而不是原始类型? 2. 如何避免在使用泛型时可能出现的类型擦除相关的问题? 3. 泛型如何影响Java的编译时类型检查?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值