Sobes.tech
Junior — Middle
69

Каким образом можно расширить функциональность класса, запрещенного для изменений, добавив к нему список данных?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Если класс нельзя изменять напрямую (например, он из сторонней библиотеки), но нужно добавить к нему данные, можно использовать паттерн "обёртка" (Wrapper) или композицию.

Другой способ — использовать Map (например, HashMap) для хранения дополнительных данных, где ключом будет объект класса, а значением — нужные данные.

Также в Java 8+ можно использовать default методы в интерфейсах для расширения функциональности, но это не добавляет состояние.

Пример с использованием Map:

class ExternalClass {
    // Класс, который нельзя менять
}

class ExternalClassData {
    private static Map<ExternalClass, String> extraData = new HashMap<>();

    public static void setData(ExternalClass obj, String data) {
        extraData.put(obj, data);
    }

    public static String getData(ExternalClass obj) {
        return extraData.get(obj);
    }
}

Таким образом, можно "расширить" класс, не меняя его код.