Java泛型,发生编译错误

apollo_son 2018-09-28 02:06:25
Java泛型应用发生编译错误,请教各位大神。

代码如下:
public class HelloWorld {
public static void main(String[] arg)
{
int[] integerArray = {1,2,3,4,5,6};
double[] doubleArray = {1.2,2.3,3.4};
PrintArray(integerArray);
PrintArray(doubleArray);
}

public static <E> void PrintArray(E[] array)
{
for(E element:array){
System.out.printf("%s", element);
}
System.out.println();
}
}

编译错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method PrintArray(E[]) in the type HelloWorld is not applicable for the arguments (int[])
The method PrintArray(E[]) in the type HelloWorld is not applicable for the arguments (double[])

at com.example.wxb.HelloWorld.main(HelloWorld.java:10)
...全文
255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
泛型在翻译后会进行类型擦除操作,也就是在虚拟机中的方法代码是:public static void PrintArray( Object[] array) 。然后再强制类型转换为E,这一点决定了泛型变量的类型不能是基本类型,因为Object[]是不能储存基本类型的。所以你写的int[]和double[]要换成相应的封装类才行。
yuji_tt 2018-09-28
  • 打赏
  • 举报
回复
不要用简单类型,比如int,float之类的,用Integer Float
汉森cd 2018-09-28
  • 打赏
  • 举报
回复
内建类型不是对象,泛型函数里入参应该不是内建类型数组:
1. int改为Interger
2. double改为Double
qq_39936465 2018-09-28
  • 打赏
  • 举报
回复
不能直接创建 泛型数组,需要写一个泛型数组的类
verejava 2018-09-28
  • 打赏
  • 举报
回复

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧