2
我正在使用該字符串來獲取一個Class名稱並使用Class.forName()來獲得一個Class。如何檢查Class.forName()是否實現了特定的接口?
現在我想知道這個類是否是另一個類的實例(在這種情況下是java.lang.AutoCloseable)。
我的代碼是
Class c = Class.forName("java.io.FileInputStream");
if(c instanceof java.lang.AutoCloseable){
//detected that FileInputStream implements AutoCloseable
}
但它似乎並沒有工作。我也嘗試過c.newInstance()和c.getClass()。newInstance(),但都不工作並拋出異常。請幫忙!
儘量考慮看看['類#isInstance'(http://docs.oracle.com/javase/ 7/docs/api/java/lang/Class.html#isInstance(java.lang.Object))還是[Class#isAssignableFrom'](http://docs.oracle.com/javase/7/docs/ API/JAVA/LANG/Class.html#isAssignableFrom(java.lang.Class中))...? – MadProgrammer
正如我們所期望的那樣,'instanceof'的左操作數是一個對象_instance_,而不是'Class >'的類或實例。要測試類本身,你應該使用'java.lang.Class'的'isAssignableFrom()'方法 –