Рассмотрим этот классКак избежать использования .clone()?
class MyClass {
private MyData[] data;
public MyData[] getData() {
return data == null ? null : (MyData[]) data.clone();
}
Это создает Issue
Security - Метод возвращает внутренний массив
обнажая внутренние массивы непосредственно позволяет пользователю изменять код , который может иметь решающее значение. Безопаснее возвращать копию массива.
Учитывая, что clone
является плохим и его следует избегать, что я могу сделать, чтобы сделать этот код лучше?
просто скопируйте массив? – Paul
'System.arraycopy' или' Arrays.copyOf' оба могут делать то, что вы хотите. –
что вы пытаетесь достичь здесь? массив только для чтения? иначе просто вернуть данные сами по себе. – WalterM