У меня возникла проблема с интерфейсами в создаваемой мной программе. Я хочу создать интерфейс, один из методов которого будет получать / возвращать ссылку на тип собственного объекта. Это было примерно так:
public interface I {
? getSelf();
}
public class A implements I {
A getSelf() {
return this;
}
}
public class B implements I {
B getSelf() {
return this;
}
}
Я не могу использовать «Я» там, где стоит «?», Потому что я хочу возвращать не ссылку на интерфейс, а на класс. Я поискал и обнаружил, что в Java нет возможности "самореференции", поэтому я не могу просто заменить это "?" в примере для ключевого слова "self" или чего-то подобного. На самом деле, я пришел к решению, которое похоже на
public interface I<SELF> {
SELF getSelf();
}
public class A implements I<A> {
A getSelf() {
return this;
}
}
public class B implements I<B> {
B getSelf() {
return this;
}
}
, но на самом деле это похоже на обходной путь или что-то подобное. Есть ли другой способ сделать это?