Допустим, у меня есть простой интерфейс:
interface IGroupBy {
String getGroupById();
}
Скажем, у меня есть список этого:
List<IGroupBy> v = List.of();
Но это означает, что список должен реализовывать этот интерфейс по имени,Но что, если я готов принять любой объект, у которого есть метод, который возвращает строку с этим именем?
Есть ли способ как-то получить структурную типизацию в Java, используя дженерики?
List<T> v = List.of();
а потом рассказать компилятору Java о T?Что-то вроде:
<T hasInterface:IGroupBy>
Я полагаю, что один из способов получить часть пути - использование обобщений, подобных этому:
interface IGroupBy<T> {
T getGroupById();
}
, оставшаяся часть - это имя метода.Но это все равно означает, что вы должны ссылаться на тот же самый точный интерфейс по имени / пакету.