[英]Is it useful to provide a type-safe method?
我正在設計界面,如下所示:
public interface Parameters {
public <T> T getValue(ParameterName pn, Class<T> valueType) throws ClassCastException;
}
如果要返回的值的Class
實例不是作為參數傳遞的Class
的AssignableForm ,則實現必須拋出ClassCastException
。
它會引起感冒嗎? 它提供了編譯時的類型安全性,但是我們可以通過顯式強制轉換來做到這一點。
或者最好只聲明
public Object getValue(ParameterName pn)
將所有類轉換問題留給客戶端。
我使用了這種形式的API,在其中添加了將類型轉換為所需類型的功能。 例如,如果它是一個字符串,但是您需要一個整數,它將嘗試解析它。
否則,如您建議的那樣,您不會添加該方法沒有提供的內容。
public <T> T getValue(ParameterName pn);
這樣可以避免顯式強制轉換。
誤解是通過將預期返回類型的Class
對象作為參數傳遞來獲得編譯時的類型安全。 如果客戶端傳遞了錯誤類型的Class
,則僅在運行時才會檢測到錯誤。
但是我認為帶有Class
參數的設計還有其他優點:
Class
參數,並在用戶犯錯時提供特定且有意義的錯誤消息。 我可以想到該設計的兩個缺點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.