[英]Groovy method “no signature” String argument and String return
我有一個關於使用Groovy的初學者問題。 我原以為這是一個簡單,沒有挑戰性的代碼片段。
def getName( str ){
def rslt = "(none)";
str.eachMatch( /$[TABLE_NAME:[a-zA-Z]]^/ ){
-> patrn
if( "(none)" == rslt ){
rslt = patrn;
}
}//eachMatch
return rslt;
}//getName
我們的想法是從傳遞的字符串' str '和' rslt '中的匹配字符串返回第一個匹配到regex。
相反,我有這種錯誤。
Exception in thread "main" groovy.lang.MissingMethodException:
No signature of method: All_Tables$_main_closure1.getName()
is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl)
values: [Action]
Possible solutions: getAt(java.lang.String), getAt(java.lang.String)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:379)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:730)
at ...
at All_Tables$_main_closure1.doCall(All_Tables.groovy:31)
at ...
at groovy.sql.Sql.eachRow(Sql.java:1186)
at ...
at All_Tables.main(All_Tables.groovy:26)
這個電話,看起來很簡單:
static void main( String args[] ){
def sql = Sql.newInstance(
"jdbc:mysql://dev:3306/dbname",
"dbuser", "dbpass", "com.mysql.jdbc.Driver" );
sql.eachRow( "SHOW TABLES;" ){
str = it[0].toString();
nam = getName( str );
};
}//main
令我感到頭疼的是,Groovy文檔提到了基本的Java和Groovy庫(例如java.lang.String)。 然而簽名在String上失敗了。
我知道的很多。 當我使用jRuby執行這一小段代碼時,就可以了。 沒有這個“ 簽名 ”的廢話。
...歡迎任何建議:-)
將
很難准確,因為你從問題中省略了很多上下文,但看起來你試圖從靜態main方法中調用非靜態方法。
嘗試將getName設為靜態,或者在封閉類的實例上調用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.