java代码在擦拭了类型参数后,怎么保证我输入的数据是符合我规定的类型参数的?

决定的温度 发布于 2014/02/06 23:08
阅读 258
收藏 1
 class Test<T,F> {
public void present(T t,F f)
{
System.out.print(t);
System.out.print(f);  
}
}如果我建立了Test的对象Test<Integer,Integer> test=new Test<Integer,Integer>();然后调用test.present(22,"string");报错,我想知道这个类型错误是怎么被检查出来的。因为擦拭了以后,T,F应该是Object类,这个编译的时候就已经完成了。
加载中
0
NealFeng
NealFeng
类型擦除,是指程序运行的时候不知道具体类型都作为Object,但在编译的时候,编译器是知道类型的,所以编译的时候会报错。 
决定的温度
决定的温度
一句惊醒梦中人,谢谢!
NealFeng
NealFeng
可能表述的不太准确
0
zoowii
zoowii
你哪里擦除类型了啊?在你的例子中,T=Int, F=Int,哪里是Object啊
决定的温度
决定的温度
现在明白了,谢谢啊
0
whaon
whaon

首先这个错误是在编译的时候出现的

因为你加了泛型<Integer,Integer>,当你调用test.present(22,"string");当然报错

决定的温度
决定的温度
编译的这个过程搞错了。。。谢谢
0
RAY_STONE
RAY_STONE
你new的时候已经为泛型指明了类型,jvm编译会判断
决定的温度
决定的温度
之前对jvm的编译过程弄错了,现在明白了,谢谢。
0
Catelyn
Catelyn
Test t = test,这才叫擦拭
返回顶部
顶部