如何将scala higher kinder类型特性的混合类型与java泛型类型匹配?

如何将scala higher kinder类型特性的混合类型与java泛型类型匹配?,java,scala,generics,types,scala-java-interop,Java,Scala,Generics,Types,Scala Java Interop,我的项目是java和scala语言的混合,但是出现了一些类型不匹配的错误,我认为这是java和scala通信中的一个常见问题。 我用简单的课程组织舞台。环境是Java1.8和Scala2.11.7 class Item[+T](name: String) //ready use Item as MM type class Packet[+MM[_]] object GenS extends App { //use Item class def doWithPacket(packet:

我的项目是java和scala语言的混合,但是出现了一些类型不匹配的错误,我认为这是java和scala通信中的一个常见问题。 我用简单的课程组织舞台。环境是Java1.8和Scala2.11.7

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>();
    }
}
任何帮助或建议,谢谢


换句话说,java如何表示scala的Packet[Item[\u]]类型

没有。Java没有更高级的类型。
MM
更高级的信息隐藏在
@ScalaSignature


当您编写
数据包
时,您使用的是a(这反过来又不能用Scala表示);您不能在
newPacketInJava

中使用
Item
换句话说,java如何表示scala的Packet[Item[\u]]类型?在scala中添加实用程序方法是一个选项吗?这可能是最简单的解决办法。我不确定您是否可以在Java中表示更高种类的类型。hi@0\uuuuu,Item[\uuu]应该在Java中表示更高种类的类型。看来我可能会避免Java代码返回更高种类的类型。无论如何,谢谢,我会避免在Java中使用更高种类的类型。关于原始类型的讨论似乎是一个遗留问题。新年快乐~
Error:(16, 16) type mismatch;  
 found   : Packet[Item[_]]  
 required: Packet[Item]  
  doWithPacket(packetFormJava)  
                  ^