Переопределение метода clone для массива

Вопрос, вот кусок кода, подскажите пожалуйста, как можно сделать что-бы метод clone вызывался и клонировал объект? ) Интересует именно вариант с переопределением метода класса Object. Потому как реализовать свой метод не проблема.

public static class AsciiCharSequence implements CharSequence{
    private final byte[] ascArr;

    public AsciiCharSequence(byte[] ascArr){
        this.ascArr = ascArr.clone();
    }

    @Override
    public byte[] clone() {
        byte[] cloneAscArr = new byte[ascArr.length];
        int index = 0;
        for (byte elem : ascArr){
           cloneAscArr[index] = elem;
           index++;
        }
        return cloneAscArr;
    }

Без переопределения я смог сделать так ( но хотелось бы понять, есть ли возможность переопределить) :

public AsciiCharSequence(byte[] ascArr){
    this.ascArr = clone(ascArr);
}

public byte[] clone(byte[] inputArray) {
    byte[] cloneAscArr = new byte[inputArray.length];
    int index = 0;
    for (byte elem : inputArray){
       cloneAscArr[index] = elem;
       index++;
    }
    return cloneAscArr;
}

Ответы (1 шт):

Автор решения: dmtr

Во-первых метод clone() имеет модификатор доступа protected, во-вторых, возвращает Object. Если хотите полностью переопределить и реализовать свою логику, тогда переопределяйте так:

@Override
protected Object clone() throws CloneNotSupportedException {
    // ваш код
}

Если вы пишите это:

public byte[] clone(byte[] inputArray) {
    // ваш код...
}

то это уже не переопределение, вы пишите полностью свой метод, т.к. он уже как минимум возвращает не объект, а массив... другая сигнатура и т.д. и т.п.

Тут объясняют простым языком про переопределения в Java.

→ Ссылка