Junior — Middle
142
¿De qué manera se puede ampliar la funcionalidad de una clase prohibida para cambios, añadiéndole una lista de datos?
Empresas donde se preguntó
Respuesta de la IA
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);
}
}
Таким образом, можно "расширить" класс, не меняя его код.