2014-01-14 56 views
-3

我想檢查類名是否在編譯時有效。我當然可以導入類並獲得編譯錯誤,但是我想要的是能夠捕獲此錯誤。我該怎麼做,如果這不是一個好方法,我可以做些什麼其他替代方案?檢查類名是否在Java中有效

例如

import com.foo.classname; 

public class Foo { 
public String classProperties() { 
    if(classname) {//this is when class is found 
    ClassName className = new ClassName(); 
    return className.toString(); 
    } 
    else {//this is when class is not found 
    return getOtherProperty(); 
    } 

} 


} 

請不要發佈任何運行時如Class.forName解決方案。

編輯:得到這麼多的負面反饋。我想解釋一下我的想法。

我的主要動機的想法是:

1)我看到這是使用反射爲此一些代碼。比如從JDK 7加載一個庫並使用該庫方法初始化一個String,並寫入其他內容(可能效率較低)來捕獲發生異常的塊。我想避免這種情況

2)錯誤和警告都是由編譯器創建的。如果我們能夠抑制一個警告,那麼我認爲可以抑制一個錯誤。

+1

類名有效<=>代碼編譯與適當進口 – assylias

+0

我知道,但就像我說的,我該怎麼辦時,它是無效的?然後代碼不會編譯,但我希望它編譯並想要處理這個。 –

+1

如果該類存在,請導入該類或創建該類?你應該解釋你想達到什麼,因爲你的問題沒有多大意義...... – assylias

回答

2

爲了得到像這樣的編譯錯誤,您必須在編譯器級別工作,要麼編寫自己的編譯器,要麼使用JavaCC或Javassist之類的東西。

乾杯