类型化与原始数组列表的兼容性

    类型化与原始数组列表的兼容性

在平常的使用中,我们可能愿意使用类型化的数组列表来增加安全性;但一旦我们遇到没有使用类型化的原始数组时,我们如何让两者进行交互操作呢?

package Test1;
import java.util.*;
public class t1 {

	public static void main(String[] args) {
		test1 t1=new test1();
		ArrayList<Integer> list=new ArrayList<Integer>();
		t1.a(list);
	}

}

class test1
{
	public void a(ArrayList list)
	{}
	public ArrayList b(String s){
		return null;
	}
}
在上面的代码中, 可以将类型化的list传递到方法a()中。

package Test1;
import java.util.*;
public class t1 {

	public static void main(String[] args) {
		test1 t1=new test1();
		//ArrayList<Integer> list=new ArrayList<Integer>();
		//t1.a(list);
		ArrayList<Integer> list=new ArrayList<Integer>();
		list=t1.b("result");
		System.out.println(list);
	}

}

class test1
{
	public void a(ArrayList list)
	{
	}
	public ArrayList b(String s){
		ArrayList a1=new ArrayList();
		a1.add(s);
		return a1;
	}
}

在上面的代码中,当我们将一个返回原始数组列表的方法赋给实现类型Integer的数组列表,这时编译器就会发出一条警告


类型安全:类型 ArrayList 的表达式需要进行未经检查的转换以符合 ArrayList<Integer>"

这些是由于编译器出于对兼容性的考虑,在堆类型转换进行检查之后,如果没有发现违反规则的现象,就将所有的类型化数组列表转换为原始ArrayList对象。在程序运行时,所有的数组列表都是一样的,即没有虚拟机中的类型参数。

当遇到警告时,只要确保警告不会造成严重后果就可以了。

在确定不会造成严重后果后,可以加上注释

@SuppressWarning("unchecked")ArrayList<Integer> list=t1.b("result");

package Test1;

public @interface SuppressWarning {

	String value();

}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值