Я хочу клонировать любой LinkedList, независимо от того, содержит ли он вещи, которые могут быть примитивными оболочками. Я понимаю, что это может быть глубокий рекурсивный вызов, чтобы получить настоящий глубокий клон, но я хочу только один уровень клонирования. Я не могу скомпилировать следующий код:Общий клон LinkedList в Java
<T> LinkedList<T> deepCloneOneLevel (final LinkedList<T> input){
if(input != null){
LinkedList<T> clone = new LinkedList<>();
for (T t: input){
clone.add(t.clone()); //error : clone() has protected access
}
return clone;
}
return null;
}
Вы не можете. Не все объекты являются клонируемыми. Чего вы пытаетесь достичь на более высоком уровне? –
Небольшой комментарий к вашему коду: цикл 'for' может быть упрощен для вызова' collect() 'с использованием Java 8. – bcsb1001
Даже если я добавлю чек (если t instanceof Cloneable); он не работает. Почему это ? Есть ли обходной путь? – SlowAndSteady