Я реализую ContractNetInitiator от Jade в Scala, и мне нужно переопределить этот метод:
protected void handleAllResponses(java.util.Vector responses,java.util.Vector acceptances)
И реализовал это так:
override def handleAllResponses(responses: Vector[_], acceptances: Vector[_]): Unit = {
var acceptProposal: ACLMessage = null
var bestProposal = Integer.MAX_VALUE
var bestProposer = ""
// Find best proposal and reject all proposal
val e = responses.elements()
while (e.hasMoreElements) {
val response: ACLMessage = e.nextElement().asInstanceOf[ACLMessage]
if (response.getPerformative == ACLMessage.PROPOSE) {
val reply = response.createReply()
reply.setPerformative(ACLMessage.REJECT_PROPOSAL)
acceptances.addElement(reply) // Can't add the reply : "Type mismatch, expected: _$1, actual: ACLMessage"
if (response.getUserDefinedParameter("Value").toInt < bestProposal) {
bestProposal = response.getUserDefinedParameter("Value").toInt
bestProposer = response.getSender.getLocalName
acceptProposal = reply
}
}
}
// Accept proposal
if (acceptProposal != null) {
acceptProposal.setPerformative(ACLMessage.ACCEPT_PROPOSAL)
}
}
Но когда я пытаюсь добавить ответ к акцептам, я получаю Type mismatch
.
Я пытался изменить «acceptances: Vector [_]» на «acceptances: Vector [ACLMessage]» и «acceptances: Vector [Any]», но он не работает, поскольку не соответствует суперклассу .
Есть ли способ добавить элементы в акцепты?