Re: Шаблонный код в Java/Kotlin - возможно ли?
От: · Великобритания  
Дата: 16.10.23 16:10
Оценка: 5 (1)
Здравствуйте, rus blood, Вы писали:

RB>Почему нельзя вынести одинаковые поля в общий класс?

Это называется duck typing. И во многих ЯП нет такого принципиально. Т.к. это создаёт неявную связь между типами.
Можно размотать через лямбды:
<T> void printValue(Supplier<String> value) {
  System.out.println(value.get());
}
...
var a = new A();
printValue(a::value);
var b = new B();
printValue(b::value);

По классике ООП можно делать адаптеры (удобно в случае если методов больше одного):
interface ValueAdapter
{
  String value();
  
  static ValueAdapter wrap(A a) {return () -> a.value;}
  static ValueAdapter wrap(B b) {return () -> b.value;}
}
void printValue(ValueAdapter adapter) {
  System.out.println(adapter.value());
}
var a = ValueAdapter.wrap(new A());
printValue(a);
var b = ValueAdapter.wrap(new B());
printValue(b);



Можно через рефлексию. Но лучше не нужно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 16.10.2023 16:12 · . Предыдущая версия . Еще …
Отредактировано 16.10.2023 16:11 · . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.