Я получаю ошибку ClassCastException
, когда я запускаю ее из-за неявного приведения d к двойному при запуске кода. Однако, если я изменяю ссылку на d in на Object[]
, то это не может быть параметром функции set. Если я изменю функцию set, чтобы принять Object[]
, тогда все будет работать нормально, но тогда класс будет терпеть неудачу во время выполнения, если кто-либо вызовет set на объект, который не имеет тип N
.Возвращение массива из общего класса
Мне нужно решение, которое может get()
старый массив (или его клон), и который может set()
данных в новый массив.
public class Foo<N> {
public static void main(String[] args) {
Foo<Double> foo = new Foo<Double>();
Double[] d = foo.get();
// do stuff to d ...
foo.set(d);
}
N[] data;
public Foo() {
data = (N[]) new Object[2];
}
public N[] get() {
return (N[]) data;
}
public void set(N[] data) {
this.data = data;
}
}
Возможный дубликат [Как создать общий массив в Java?] (Http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java) – Julien
Это не дубликат этого q. – avisnacks
вы можете использовать этот http: // stackoverflow.com/a/3403976/2513573 для извлечения типа и Array.newInstance для создания массива – AdamSkywalker