Exception in thread "main" java.lang.RuntimeException: Uncompilable source code generic array creation
at mygenerics.Addition.<init>(MyGenerics.java:26)
at mygenerics.MyGenerics.main(MyGenerics.java:16)
Java Result: 1
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mygenerics;
/**
*
* @author SUMIT
*/
public class MyGenerics {
public static void main(String[] args)
{
Addition<Integer> ints = new Addition<>(1,2,3);
ints.sum();
Addition<Double> dbls = new Addition<>(1.25,2.68,3.49);
dbls.sum();
System.out.println(ints.toString());
}
}
class Addition<T extends Number>
{
**T arr[]=new T[10];**
public Addition(T... values)
{
for(int j=0;j<values.length;j++)
{
int i=0;
arr[i]=values[j];
i++;
}
System.out.println(arr);
}
public <T extends Number> void sum()
{
T sum;
System.out.print(arr);
for(int i = 0;i<arr.length;i++)
{
**sum = sum + this.arr[i];**
}
}
}
TGeneric数组不能直接在Java中创建,因为Java必须在运行时知道组件类型,但由于类型擦除,泛型在运行时不知道它们的类型
T[] genericArray = (T[]) new Object[];
这里有一个更好的方法:
// Use Array native method to create array of a type only known at run time
T[] genericArray = (T[]) Array.newInstance(componentType,length);
第一个方法使用弱类型-不对任何作为参数传递的对象执行检查。第二种方法使用强类型--如果试图传递不同类的参数,将引发异常,但在创建数组之前,必须在运行时知道组件类型
我试着做这样的事:- myObject是一个类。我得到这个错误:-泛型数组创建(箭头指向New.)
我在IDE“泛型数组创建”中遇到以下错误 我在谷歌上搜索了一下,但是发现了很长的解释,不太明白这个问题的最佳解决方案是什么。 如果有人能提出最好的解决方案来编译我的代码... 我的目标是返回一个由2组成的数组(不多不少)。
问题内容: 如何创建泛型类型的数组?通用方法如何工作?它返回通用数组的副本。因此可以创建通用数组。但是如何?怎么能写一个类似的方法呢? 问题答案: 如果需要在运行时创建它,则至少需要在此时知道类型,因此可以使用以下方法: where 是泛型类型,是的类,并且是初始大小。 这里的文件
我声明了一个变量为: 但当我尝试用以下实例化它时: 我得到一个“泛型数组创建”错误。 我在这里搜索了一下,虽然有很多关于这个错误消息的帖子,但似乎没有人提供一个实际可行的解决方案,所以我再次尝试。 我不介意是什么类型的集合,只要它能工作并且我以后可以访问它的索引成员。一个简单的数组似乎是“最轻的”解决方案,但可能还有其他的也可以。 谢谢
问题内容: 我有一个普通班和一个具体班。如何创建类型数组? 我试过: 但是我得到了ClassCastException。 但是,当我尝试时: 效果很好。 问题答案: 使用原始类型创建数组:
问题内容: 假设我必须创建一个存储ArrayList的Integers数组,并且数组大小为10。 下面的代码可以做到这一点: 问题1: 我认为更合适的代码是 为什么这不起作用? 问题2: 下面两个都编译 有什么区别尽可能的引用声明和关注? 问题答案: 问题1: 基本上,这是Java语言禁止的。Java语言规范中的泛型部分对此进行了介绍。 使用时 您会收到编译器警告,因为以下示例将进行编译(为每行代