在Java中,Class.forName是否可以返回null,或者如果無法找到該類,它總會拋出ClassNotFoundException或NoClassDefFoundError?在Java中,Class.forName是否可以返回null?
4
A
回答
9
Java Docs表示如果找不到類,它會拋出ClassNotFoundException,所以我會說它永遠不會返回null。
5
因爲在這個方法的文檔中沒有提到null,並且因爲似乎沒有任何情況會讓方法返回null而不是引發異常,所以我認爲它很安全假定它從不返回空值。
它不會拋出NoClassDefFoundError,但它可能會拋出ClassNotFoundException。
0
使用默認的類加載器,當然你不會收到空值。但是,正如jdigital所說,根據您可能使用的安全模型或其他類型的代理加載器(有意或無意),您可能會受到任意數量的自定義類加載器的約束。
哎呀,甚至能的forName採取一個ClassLoader作爲參數... :)
Piko的
-2
@丹代爾是錯誤的,的Class.forName 可以拋NoClassDefFoundError
,如果類是試圖在其靜態初始化程序中發生ClassNotFoundException錯誤。如果您編譯並在沒有其他文件的目錄運行這個你ClassNotFoundException: Inner
現在,添加以下內容在同一目錄下,編譯一切,java Outer
一次,來看看它運行以下是unte
class Outer {
public static final void main(final String[] args) throws Exception{
Class.forName("Inner");
}
}
好。
class Inner {
static Inner2 _i2 = new Inner2();
}
class Inner2 {}
最後,刪除Inner2.class並重新運行外,你將得到NoClassDefFoundError: Inner2
,caused by ClassNotFoundException: Inner2
相關問題
- 1. CreateFile是否可以返回NULL?
- 2. 可以String.Split()是否返回null? (.net)
- 3. AppDomain.CreateInstanceAndUnwrap是否可以返回null?
- 4. XmlSerializer.Deserialize是否可以返回null?
- 5. document.getElementsByTagName('head')[0]是否可以返回null?
- 6. C#2.0:MethodBase.GetCurrentMethod()是否可以返回null?
- 7. javax.persistence.Query.getResultList()是否可以返回null?
- 8. 在javascript中,NEW函數是否可以返回NULL?
- 9. 是否可以使Class.forName(「」)變得靈活?
- 10. java StringTokenizer - 可以nextToken返回null嗎?
- 11. 是否可以在serviceContract中返回System.Messaging.Message?
- 12. readline()在Java中返回null
- 13. Can WebResponse.GetResponseStream()是否返回null?
- 14. EditText.getText()是否返回null?
- 15. ExecuteScalar可以返回null嗎?
- 16. ServiceLocator.Current.GetInstance可以返回null嗎?
- 17. 可以WindowsIdentity.GetCurrent()返回null?
- 18. 當getActivity()可以返回null?
- 19. getBestProvider可以返回null嗎?
- 20. 是否可以在Class.forName中使用動態值?
- 21. 是否可以在Method中返回多個返回類型?
- 22. 實現IHttpHandlerFactory時GetHandler是否可以返回null?
- 23. DbProviderFactory.CreateCommandBuilder實際上是否可以返回null?
- 24. 是否有可能知道BufferedReader.readLine()是否會提前返回null?
- 25. 是否有可能Java String.split可以返回空字符串[]
- 26. Java的HashMap中返回null
- 27. Package.getPackage在Java返回null
- 28. Java readLine()返回null
- 29. Java:僅返回null
- 30. Java getIntent.getStringExtra返回null
爲什麼不扔一NCDFError? – Phil 2009-01-09 23:17:08
它已經拋出ClassNotFoundException異常,如果兩者都使用它會引起混淆。當VM在正常操作過程中找不到類時,VM引發NoClassDefFoundError。當使用反射的代碼找不到類時,會引發ClassNotFoundException。 – 2009-01-10 00:39:58
這並不完全正確。 Class.forName確實會拋出NCDFE,請參閱下面的回覆。 – 2009-01-10 03:20:16