4

「handDetailList.each」の行でキャスト例外がスローされます。コードがリストを "Hand" クラスにキャストしようとしている理由がわかりません。時々Groovyはキャスティングで奇妙なことをするように私には思えます....?

private Hand buildHands(List handDetailList) {

        def parsedHand = new Hand()

        parsedHand.setTableName(handDetailList.get(1))


        handDetailList.each {

        }
    }

次の例外が発生します (例外を編集しました。70 行目は「handDetailList.each {」です)。

Exception in thread "main" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object <details of the list, omitted> with class 'java.util.ArrayList' to class 'gameMechanics.Hand' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: gameMechanics.Hand(java.lang.String,........


    at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:358)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:599)
    at advisor.HistoryParser.buildHands(HistoryParser.groovy:70)
    at advisor.HistoryParser.this$2$buildHands(HistoryParser.groovy)
    at advisor.HistoryParser$this$2$buildHands.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at advisor.HistoryParser.parse(HistoryParser.groovy:57)
    at advisor.HistoryParser$parse.call(Unknown Source)
4

1 に答える 1

5

eacheach呼び出されたリストを返します。

関数がタイプ のオブジェクトを返すと言いましたが、HandGroovy はメソッド内の最後のステートメントを自動的に返すため、リストを のインスタンスに変換しようとしてHand失敗しています...

あなたが返したいものは何ですか?変数parsedHand

多分試してください:

private Hand buildHands(List handDetailList) {
    def parsedHand = new Hand()
    parsedHand.setTableName(handDetailList.get(1))
    handDetailList.each {
    }
    parsedHand
}

もしそうなら。

于 2013-09-10T08:54:42.313 に答える