我有一個方法:
public LoadService {
public <T> T load(String blobId, Class<T> objectClass) {
// do stuff here
}
}
這允許我像這樣呼叫它:
Fizz fizz = loadService.load("12345", Fizz.class);
Buzz buzz = loadService.load("23456", Buzz.class);
這很棒。除了,現在,我想load(...)回傳一個Optional<???>,以便互動看起來像:
Optional<Fizz> maybeFizz = loadService.load("12345", Fizz.class);
if (maybeFizz.isPresent()) {
// etc.
}
Optional<Buzz> maybeBuzz = loadService.load("23456", Buzz.class);
if (maybeBuzz.isPresent()) {
// etc.
}
我需要對load(...)方法進行哪些更改才能使其能夠回傳Optionalof <T>?
uj5u.com熱心網友回復:
你可以通過宣告這樣的東西來做到這一點。
public static <T> Optional<T> load(Object something, Class<T> clazz){
return Optional.of((T)something);
}
uj5u.com熱心網友回復:
您可以像這樣在方法內對給定物件進行型別轉換load():
T result = (T) myObject;
或通過使用類的 ofcast()方法Class<T>:
T result = objectClass.cast(myObject);
唯一的區別是,在第一種情況下,編譯器將對未經檢查的型別轉換發出警告。
為了從可為空的值創建一個可選物件,您必須使用靜態方法Optional.ofNullable(),如果給定值為 ,它將創建一個空的可選物件null。相反,如果您傳遞對它的參考,則Optional.of()使用 throw a 的方法。NullPointerExceptionnull
因此,您的方法的 return 子句可能會這樣寫:
return Optional.ofNullable(objectClass.cast(myObject));
要么
return Optional.ofNullable((T) myObject);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454779.html
