Это не ответ, но я должен поблагодарить Йорна за его ответ!
Я наткнулся на эту ветку, пытаясь сделать именно то, что дал мне ваш ответ (хотя он не отвечает на исходный вопросник). Я пытался сделать это:
public static interface Displayable
extends Identifiable, Nameable { }
public void print(Displayable obj) {
System.out.println("[" + obj.getIdentity() + "] " + obj.getName());
}
, который не работает, потому что объект, который я передаю, не реализует Displayable, но не Nameable и Identifiable отдельно.
Используя технику Йорна, я делаю это:
public <T extends Identifiable & Nameable> void print(T obj) {
System.out.println("[" + obj.getIdentity() + "] " + obj.getName());
}
и работает безупречно!
Надеюсь, это будет полезно другим, у которых возникла такая же проблема, как у меня (и наткнулся на эту ветку).