我正在使用來自具有以下簽名的外部 Maven 依賴項的 API:
public <T> T get(String key, Class<T> responseType)
APIT從鍵值存盤中回傳給定鍵的型別物件。
在我的應用程式中,有幾種可以回傳的物件型別,例如:Product等Customer。
我想將外部 API 包裝到我的服務中,該服務將接收密鑰并回傳找到的物件。我不知道如何從服務中回傳物件型別。以下是我的嘗試:
public class MyService {
public <T> T get(String key, String objType) {
Class clazz = null;
if (objType == "Customer") {
clazz = Customer.class;
} else if (objType == "Product") {
clazz = Product.class;
}
return externalApi.get(key, clazz); // doesn't compile
}
}
Incompatible types: Object is not convertible to T由于錯誤,此代碼無法編譯。
如何正確傳遞responseType并externalApi.get回傳正確的型別而不進行反射?
uj5u.com熱心網友回復:
正如 OP 可能已經猜到的那樣,這本質上是不可能的。
如果呼叫站點get可以做任何有用的事情來保留回傳的型別T,那么它無論如何都會知道該型別并可以提供正確的類(假設這是通過呼叫站點傳遞傳播的)。
(另請注意,代碼使用==forString而不是 equalsor switch。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464410.html
