[英]whats the return type of .getClass() method…is it class name or object of class?
[英]Return type of getClass method
Object
方法getClass()
的文檔說:
實際的結果類型是
Class<? extends |X|>
Class<? extends |X|>
where|X|
是調用getClass的表達式的靜態類型的擦除。
那么為什么foo
編譯但不是bar
?
static void foo(String s) {
try {
Class<? extends String> clazz = s.getClass();
} catch (Exception e) {
}
}
static <T> void bar(T t) {
try {
Class<? extends T> clazz = t.getClass();
} catch (Exception e) {
}
}
編輯
我接受了yshavit的答案,因為它清楚地回答了我的問題,但我仍然很想知道他們為什么這樣定義它。 他們可以將它定義為Class<? extends T>
Class<? extends T>
其中T
是表達式的靜態類型。 我不清楚為什么在這個階段刪除類型信息是必要的。 如果類型是List<String>
,則有意義,但如果它是T
,則無效。 我會向任何解釋這個問題的答案進行投票。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.