Java中泛型T的用法

01-描述

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

02-用法

第一种用法:

Demo类的getListFisrt方法可以接受任意类型List参数。

package com.eleven.csdn0115;

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

/**
 * <T> T表示:返回值T是泛型,T只是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候再告诉你是什么类型。
 * 
 * @author sywangu
 *
 */
public class Demo {
	public static void main(String[] args) {
		Demo demo = new Demo(); // 创建一个demo对象

		// 获取String类型
		List<String> array = new ArrayList<String>(); // 创建一个ArrayList数组
		array.add("a");
		array.add("b");

		demo.getListFirst(array); // Demo类的getListFisrt方法可以接受任意类型List参数
		System.out.println(array);	// 打印出的结果是[a, b]

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

		demo.getListFirst(nums);
		System.out.println(nums);	// 打印出的结果是[12, 13]
	}

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

}

第二种用法:

Demo2类在初始化的时候已经限定了T的类型,所以getListFirst方法只能接受List类型的参数。

package com.eleven.csdn0115;

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

/**
 * 单独T的用法
 * 
 * @author sywangu
 *
 */
public class Demo2<T> {
	public static void main(String[] args) {
		// 获取String类型
		Demo2<String> demo = new Demo2<>();	// 限制"T"的类型为String
		
		List<String> array = new ArrayList<String>();	// 返回的类型是String
		array.add("a");
		array.add("b");
		
		String str =demo.getListFirst(array);	// 返回的类型是String
		System.out.println(array);	// 打印出的结果是[a, b]
		
		// 获取Number类型
		Demo2<Integer> demo2 = new Demo2<Integer>();	// 限制"T"的类型为String
		
		List<Integer> nums = new ArrayList<Integer>();	// 返回Integer类型
		nums.add(1);
		nums.add(2);
		
		Integer num = demo2.getListFirst(nums);	// 返回的类型是Integer
		System.out.println(nums);	// 打印出的结果是[1, 2]
		
	}

	/**
	 * 通用方法
	 * @param data
	 * @return
	 */
	private T getListFirst(List<T> data) {
		if(data == null || data.size() == 0) {
			return null;	
		}
		return data.get(0);
	}
}
发布了90 篇原创文章 · 获赞 284 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41293896/article/details/103987667