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);
}
}
Таким образом, можно "расширить" класс, не меняя его код.