2
Java Generics 기능이 다소 새로 도입되었습니다.매개 변수가있는 반환 값 형식의 문제
interface Response {}
interface Request<T extends Response> {}
class TestResponse implements Response {}
class TestRequest implements Request<TestResponse> {}
<T extends Response> T foo(Request<T> b) {
TestResponse tr = new TestResponse();
return tr;
}
모든 것이 나에게 좋은 것 : 아래의 코드가 작동하지 않는 이유를 파악하는 데 도움 주실 래요 반환 값 유형은 응답 인터페이스를 구현하지만, 컴파일러는 동의 : "형식이 일치 할 수 없습니다
OtherRequest<OtherResponse> req = new OtherRequest<OtherResponse>();
OtherResponse res = foo(req);
당신은 문제를 참조하십시오 T로 TestResponse 변환 "
여러분은 implements/extends 키워드에 몇 가지 문제가 있다고 생각합니다. 메소드에서 T 유형은 Response를 확장해야하지만 TestResponse는 Request (Response에서 확장 할 수있는 유형)를 구현합니다. 인터페이스와 유형 와일드 카드가 다른 방식으로 수행 될 수 있다고 생각합니다. –