мой проект смешанный язык java и scala, но возникает ошибка несоответствия типа, и я думаю, что это общая проблема с точки зрения обмена Java и Scala. Я организовал сцену с простыми классами. Окружающая среда Java 1.8 и Скала 2.11.7Как сочетается смешанный тип более ранних типов scala с характерным типом java?
class Item[+T](name: String)
//ready use Item as MM type
class Packet[+MM[_]]
object GenS extends App {
//use Item class
def doWithPacket(packet: Packet[Item]) = {}
//type error occur on packetFormJava variable form java
val packetFormJava = GetGenJ.newPacketInJava
doWithPacket(packetFormJava)
//run well
val packetFromScala = new Packet[Item]
doWithPacket(packetFromScala)
}
и класс Java просто:
public class GetGenJ {
public static Packet<Item> newPacketInJava() {
return new Packet<Item>();
}
}
Компиляция ошибка встречи:
Error:(16, 16) type mismatch;
found : Packet[Item[_]]
required: Packet[Item]
doWithPacket(packetFormJava)
^
любую помощь или совет, спасибо.
Другими словами, как java представляет собой пакет Packet [Item [_]]? – LoranceChen
Добавляет ли утилита в Scala параметр? Это может быть самым простым решением. Я не уверен, что вы можете представлять более высокие типы типов в Java вообще. –
hi @ 0__, Item [_] должен представлять собой более высокий тип типа в Java. Кажется, я мог бы избежать Java-кода, возвращающего более высокий тип type.thanks в любом случае – LoranceChen