Я ищу реализовать общий класс, который имеет два поля:Как создать клон массива через общий подстановочный знак в Java?
class A<E>{
private final E[] values;
private final int size;
//default constructor
public A(){
values = (E[]) new Object[0];
size = 0;
}
}
Теперь я хочу ввести конструктор копирования, который реплицируется в родовой Объекте неизвестного типа. Что-то вроде этого:
class A<E>{
private final E[] values;
private final int size;
//default constructor
public A(){
values = (E[]) new Object[0];
size = 0;
}
//the copy constructor
public A(A<?> a){
//Code here
}
}
Основная идея заключается в том, чтобы использовать подстановочные захвата вспомогательной функции как
private <T> T[] copyHelper(A<T> originalA){
T[] originalValue = originalA.value;
T[] copy = Arrays.copyOf(originalValue, 0);
return copy;
}
, а затем в конструктор копирования делать
public A(A<?> a){
value = (A[]) copyHelper(a);
size = a.size;
}
служит ли это цель? Не отличает ли возвращаемое значение от copyHelper()
до E[]
излишним? Как еще я могу получить копию пройденного объекта A<?>
, тип которого неизвестен?
Вы не должны копировать экземпляр, который не соответствует типу, который вы хотите. 'A >' кажется неправильным, предпочитая 'A'. –
Makoto
Как же, следует ли мне приступить к реализации конструктора копирования, если пользователь хочет создать экземпляр класса с объектом другого типа (другой общий класс) - класс, отличный от 'E'? – jigsawmnc
Я думаю, что это был бы отличный вопрос. Вероятно, вы должны снова отправить сообщение. – markspace