Junior — Middle
133
Değiştirilmesi yasaklanan bir sınıfın işlevselliği nasıl genişletilebilir, ona bir veri listesi ekleyerek?
Sorulan şirketler
AI'dan gelen yanıt
sobes.tech yapay zeka
Если класс нельзя изменять напрямую (например, он из сторонней библиотеки), но нужно добавить к нему данные, можно использовать паттерн "обёртка" (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);
}
}
Таким образом, можно "расширить" класс, не меняя его код.