У меня есть этот код:Как создать массив элементов, чьи записи имеют общие поля?
import java.util.*;
import java.lang.*;
import java.io.*;
class Main{
public static void main (String[] args){
Foo<String> foo = new Foo<String>(1000);
}
}
class Foo<Key extends Comparable<Key>>{
private Entry[] a;
private class Entry{
Key key;
}
public Foo(int size){
a = (Entry[])new Object[size]; // <- this is the problem
}
}
, когда я скомпилировать его, я получаю сообщение об ошибке, говоря:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LFoo$Entry;
at Foo.<init>(Main.java:17)
at Main.main(Main.java:7)
Я пробовал:
import java.util.*;
import java.lang.*;
import java.io.*;
class Main{
public static void main (String[] args){
Foo<String> foo = new Foo<String>(1000);
}
}
class Foo<Key extends Comparable<Key>>{
private Entry[] a;
private class Entry{
Key key;
}
public Foo(int size){
a = new Entry[size];
}
}
Но тогда я получил сообщение об ошибке сказав :
Main.java:17: error: generic array creation
a = new Entry[size];
^
Возможно ли создать этот массив?
Почему Java не может это сделать по умолчанию? Звучит как боль, которую нужно бросить и написать этот длинный изгиб метода. – Pavel
вы всегда можете сделать 'import java.lang.reflect;' и написать простой '... Array.newInstance (...' – Andremoniy