0
我想爲我的基本服務編寫一個通用接口。這是我所嘗試的:如何在java接口中使用泛型的泛型
假設我們有一個請求和響應對象。每個請求類型都必須綁定到響應類型,所以我們可以處理響應類型的請求。
abstract class Response {
}
abstract class Request<R extends Response> {
}
現在讓我們寫一些關於他們的實現:
class DummyResponse extends Response {
}
class DummyRequest extends Request<DummyResponse> {
}
好了,我們有實現。讓我們深入到界面,我掙扎着:
interface MyService {
<R extends Response, T extends Request<R>> R getResponse(T request);
}
當我實現這個爲MyService,我有錯誤:
class MyServiceImpl implements MyService {
//these method gives me error
@Override
public DummyResponse getResponse(DummyRequest request) {
//do sth
return response;
}
}
那麼,爲什麼我這樣做呢?因爲我想用自己的請求和響應對象編寫大量的服務實現,所以我可以從一個點 - 服務接口來處理它們。
我該如何使用接口來做到這一點?或者這是一個錯誤的方法?真正的做法是什麼?
在此先感謝。
感謝您的回答,我知道我可以做到這一點,但與此方法我必須使用接口與通用定義。我只想在方法級別使用泛型。我的服務必須留在我的服務,而不是MyService –
oko
2015-02-06 21:17:50
想一想它的水平。如果一個接口說實現者必須提供一種接受任何有效的R和T組合的方法,那麼它是如何實現該接口來創建一個只接受一個特定組合的類? Java泛型不是模板工具,現在忘記語法看起來是一樣的,你會爲自己節省很多挫折。 – Affe 2015-02-06 21:26:25
@oko問題是,如果泛型必須存在於接口中的方法中,那麼所有具體類必須在實現方法上具有泛型。所有具體的類都需要採取任何類型的「響應」和任何與其關聯的「請求」。非泛型接口上的泛型方法的設計在這裏不正確;正確的設計是通用接口。 – rgettman 2015-02-06 21:29:47