java中,类型通配符和泛型方法的比较

54 篇文章 0 订阅
10 篇文章 0 订阅

标题:java中,类型通配符和泛型方法的比较

一、分析

  • 使用泛型方法public static <T> void copy(Collection<T> from,Collection<T> to)只能T–>T,不能String–>Object,【不推荐】

*【推荐】 使用通配符和泛型方法结合public static <T> void copy02(Collection<? extends T> from,Collection<T> to)
* 可以String–>Object 【T的子类–>T】
* Collection<? extends T> from【只能取,】enough,

  • 【次之】使用泛型方法public static <T,E extends T> void copy03(Collection<E> from,Collection<T> to)
    • 可以String–>Object 【T的子类–>T】
    • Collection from【可以取,放】,但是此处没有必要
public class TestMyUtils02 {
	
	/**不推荐
	 * 只能T-->T,不能String-->Object
	 * @param <T>
	 * @param from
	 * @param to
	 */
	public static <T> void copy(Collection<T> from,Collection<T> to) {//只能object-->object,不能String-->Object
		for(T t:from) {
			to.add(t);
		}
	}
	
	/**
	 * 可以String-->Object  【T的子类-->T】
	 * Collection<? extends T> from【只能取,】enough,
	 * @param <T>
	 * @param from
	 * @param to
	 */
	public static <T> void copy02(Collection<? extends T> from,Collection<T> to) {
		for(T t:from) {
			to.add(t);
		}
	}
	
	
	/**
	 * 可以String-->Object  【T的子类-->T】
	 * Collection<E> from【可以取,放】,但是此处没有必要
	 * @param <T>
	 * @param from
	 * @param to
	 */
	public static <T,E extends T> void copy03(Collection<E> from,Collection<T> to) {
		for(T t:from) {
			to.add(t);
		}
	}
	
	
	/**
	 * main
	 * @param args
	 */
	public static void main(String[] args) {
		List<String> from=new ArrayList<>();
		from.add("aa");
		from.add("bb");
		from.add("cc");
		System.out.println("--------------测试一    String-->String");
		List<String> to=new ArrayList<>();
		TestMyUtils02.copy(from, to);
		TestMyUtils.printCollection02(to);//输出容器Collection中的内容,参见上一篇blog:https://blog.csdn.net/weixin_45986454/article/details/106669843
		
//		System.out.println("--------------测试二   String-->Object");
//		List<Object> to2=new ArrayList<>();
//		TestMyUtils02.copy(from, to2);//编译不通过,
		
		System.out.println("--------------测试三  String-->Object");
		List<Object> to3=new ArrayList<>();
		TestMyUtils02.copy03(from, to3);
		TestMyUtils.printCollection02(to3);//输出容器Collection中的内容,参见上一篇blog:https://blog.csdn.net/weixin_45986454/article/details/106669843
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值