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

212
03 апреля 2022, 03:10

Вопрос, вот кусок кода, подскажите пожалуйста, как можно сделать что-бы метод 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;
}
Answer 1

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

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

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

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

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

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

READ ALSO
Ширина столбцов JTable

Ширина столбцов JTable

Имеется код

103
ListView может в 2 колонки выводиться?

ListView может в 2 колонки выводиться?

Нужно вывести ListView в две колонки те

130
Отключить проверки на ошибки при компиляции классов

Отключить проверки на ошибки при компиляции классов

Как можно отключить проверки на ошибки когда IDEA компилирует проект, по картинке ниже видно что выводятся Warnings, мне бы не то что не хотелось...

74