我有兩個 json 模式檔案,使用 jackson-CarSearchResponse 和 HomeSearchResponse 從中生成了兩個類。他們沒有關系。
在我的實作中,我創建了一個具有通用功能的抽象類,然后為 Car 和 Home 創建了兩個具體實作。
abstract class SearchResponseFlow {
void execute() {
responseFlow.map(response);
}
abstract ResponseWrapper<SearchResponse> getData(); // SearchResponse is imaginary, what change can I make to make it accept both CarSearchResponse and HomeSearchResponse.
}
class HomeSearchResponseFlow extends SearchResponseFlow {
void map(HomeSearchResponse resp) {
// logic
}
ResponseWrapper<HomeSearchResponse> getData() {
// logic
}
}
class CarSearchResponseFlow extends SearchResponseFlow {
void map(CarSearchResponse resp) {
// logic
}
ResponseWrapper<CarSearchResponse> getData() {
// logic
}
}
SearchResponse是虛構的,因為 CarSearchResponse 和 HomeSearchResponse 都沒有實作 SearchResponse,因為它們都是從不同的 JSON 模式檔案單獨生成的,我可以做些什么改變以使其接受 CarSearchResponse 和 HomeSearchResponse。我還必須在外面使用 *SearchResponse,那該怎么辦?
uj5u.com熱心網友回復:
你可以用泛型做到這一點:
class ResponseWrapper<T>{
}
class HomeSearchResponse {
}
class CarSearchResponse {
}
abstract class SearchResponseFlow<T> {
public void execute(T response) {
System.out.println(response);
}
abstract ResponseWrapper<T> getData();
}
class HomeSearchResponseFlow extends SearchResponseFlow<HomeSearchResponse> {
@Override
public void execute(HomeSearchResponse homeSearchResponse) {
System.out.println(homeSearchResponse);
}
@Override
ResponseWrapper<HomeSearchResponse> getData() {
return new ResponseWrapper<>();
}
}
class CarSearchResponseFlow extends SearchResponseFlow<CarSearchResponse> {
@Override
public void execute(CarSearchResponse carSearchResponse) {
System.out.println(carSearchResponse);
}
@Override
ResponseWrapper<CarSearchResponse> getData() {
return new ResponseWrapper<>();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350002.html
上一篇:Django錯誤:NoReverseMatchat/Post/8Reversefor'comments'witharguments'('',)
下一篇:java泛型<T擴展>
