2013-06-27 88 views

回答

4

java.lang.Class<?>是實例的完整類型聲明。它相當於

import java.lang.Class; 

... 

static <T> T create(Class<?> classLiteral) ... 

他們只是被在Javadoc徹底。 java.lang.Class是一個表示類的java類。你可以閱讀它的javadoc here

您可以

YourClass.class // where class is a reserved java keyword will return an instance of type Class<YourClass> 

訪問類的Class對象如果如果<?>是混淆你有一個實例

YourClass yourInstance = ... 
yourInstance.getClass(); // will return an instance of type Class<YourClass> 

,它被稱爲通配符。你可以閱讀更多關於它here

+0

嗯,是的,我知道什麼是通配符(猜不是嘿嘿)。我用它以其他形式喜歡?擴展ClassY。但是在這裏,它與一個聲明爲Class的類沒有聲明爲Class bu。我現在要檢查你的鏈接,看看我能不能找到這個 – Malka

+0

的底部,所以我的第一個糟糕的是該類真的被宣佈爲類 ...更多來.. – Malka

+0

@Malka類Class '是一個通用的類。 '公開最終類'。你可以在java源代碼或javadoc中看到它。 ''與''不一樣。 ''意味着它可以是任何東西。以前,'T'只是實際指定類型的佔位符。 –

2

在這種情況下,該方法調用類文字,而不是類的實例。這意味着您將實際的類傳遞給方法而不是類的實例。

這樣的一個例子是,如果你要撥打:

創建(MyClass.class);

在這裏,你傳遞一個Class對象,但不是MyClass的一個實例。所以,create方法是要求一個Class對象,而不是你傳入它的任何Class的實例。

如果它是類(java.lang.Class classLiteral),那麼它將調用任何擴展類的對象的實例。

+1

是的,我明白它呼籲類文字我不明白是什麼類是否正確?...不應該簡單類在這種情況下使用,而不是類;像create(java.lang.Class classLiteral) – Malka

+1

@Malka''被稱爲通配符。 –

+0

我也會選擇這個答案 – Malka