这是不是一个问题该怎么做。这是一个问题为什么是它的方式。java数组参数类型
Java中的数组在运行时知道它们的组件类型,并且由于类型擦除,我们不能拥有泛型类型变量的数组对象。允许使用涉及泛型的数组类型,并检查声音的读/写情况,唯一的问题似乎是分配器表达式。
注意,Java编译器也不允许以下:
Pong<Integer> lotsofpong [] = new Pong<Integer>[100];
...其中Pong
是任何旧的参数类。这里什么都没有。是的,在运行时,lotsofpong
只是一个Pong
的数组,但我看不到为什么编译器不能记住类型参数以便编译时使用。嗯,它确实记得它,因为这些类型是在编译时存在的,所以唯一的问题似乎是拒绝在编译时为分配器提供一个特定的涉及参数的组件类型。
即使参数Pong
是一个通用类型变量,也不应该有所作为。动态数组仍然是一个Pong
的数组,要求每个元素的大小为Pong
,它不依赖于它的类型参数。
是的,我知道有办法解决它 - 要么使用非参数类型的casts(可能带有SuppressWarning),要么使用非参数类的子类Pong<Integer>
,而是使用该类型。但是,为什么这种分配器是不允许的?
http://stackoverflow.com/questions/9542076/array-of-parameterized-types,http://stackoverflow.com/questions/529085/java-how-to-generic-array-creation和http: //www.ibm.com/developerworks/java/library/j-jtp01255/index.html可能是有趣的。 – jedwards
有效的Java项目25.我不太记得它,但是您可以试试[google书籍链接](http://books.google.com/books?id=ka2VUBqHiWkC&pg=PA119&lpg=PA119&dq=effective+java+generic +阵列&源= BL&OTS = yYIoOin1VY&SIG = OLgj07rc_1YGLtguS2E1slt2iDc&HL = EN&SA = X&EI = Kw6jUZDUCbTV4ASajIGIAw&VED = 0CC4Q6AEwAA#v = onepage&q =有效%20java%20generic%20array&F =假) – zeller