이것은 간소화 된 버전에서 다른 사람의 질문을 해결하려고 시도한 것입니다. 반사적 (순환) 의존성이있는 클라이언트와 서버는 제네릭을 사용하여 수퍼 클래스에서 강력한 형식의 참조를 유지하려고 시도합니다. wish는 ClientType1 < -> ServerType2와 같은 임의의 하위 형식 구문 분석과 특정 형식에서만 발견되는 특수 메서드에 대한 강력한 형식의 호출에 대한 것이 었습니다.반사적 종속성을 가진 일반 클래스
이것은 서버에서 클라이언트까지 한 단계의 깊이에서만 작동하지만 그 클라이언트에서 서버로 다시 계속하려고하면 실패합니다. 임의의 수준의 강력한 형식의 호출을 허용하는 구문이 있습니까?
abstract class ServerBase<C extends ClientBase<?>>
{
ArrayList<C> clients = new ArrayList<C>();
}
abstract class ClientBase<S extends ServerBase<?>>
{
S server;
}
class ClientType1<S extends ServerBase<?>> extends ClientBase<S>
{
public void clientType1Method() {}
}
class ServerType1<C extends ClientBase<?>> extends ServerBase<C>
{
}
public class Example {
public static void main(String[] args) {
ServerType1<ClientType1<?>> s = new ServerType1<>();
s.clients.get(0).clientType1Method(); // Single depth level - OK
s.clients.get(0).server.clients.get(0).clientType1Method(); // level 2 - compiler error - undefined method
}
}
감사하지만, 그 의미는 아니었지만. 임의의 수준에서 작동해야하며 clientMethod는 각 파생 클래스 (예 : 다른 이름 또는 서명)에서 고유해야합니다. –