我正在研究一個在Java中編寫了90%,在Groovy編寫了10%的大型代碼庫。我最近纔開始學習Groovy,並希望得到一些建議。我在Groovy方法中遇到過類似這樣的代碼:GroovyRuntimeException:不明確的方法重載
throw new RuntimeException(getErrorMessage(state));
這在大多數情況下都適用。問題是,在這個非常罕見的場合,getErrorMessage(state)
返回null而不是String。我無法更改getErrorMessage()
的實施。
我可以解決這樣的這一具體問題:
throw new RuntimeException((String) getErrorMessage(state));
或者是這樣的:如果我用@CompileStatic
throw new RuntimeException(getErrorMessage(state) ?: '(no detail available)');
就不會出現這個問題,但也有代碼的其他部分是依靠動態功能。
我的問題是,我只能通過遇到錯誤報告來解決這些問題,這對於應用程序的可靠性和聲譽來說並不好。 (問題不僅在於getErrorMessage
,而且還包括在運行時可能發生模糊過載異常的所有情況。)
如何預先預見此類問題? (目前可用的靜態分析工具似乎並不足夠聰明的抓住這個。)
謝謝,但我的問題不只是'getErrorMessage'。這種方法只是無數的方法之一,有時可以返回null。我正在尋找一種方法來查找所有可能導致模糊方法調用的代碼。 –
如果問題在於Groovy在運行時決定使用哪個重載方法,那麼可以通過添加一個帶有Object的重載方法來'捕捉'任何'null'。當參數爲null時,Groovy將調用該方法。 –