2015-12-31 3 views
1

мой проект смешанный язык 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) 
       ^

любую помощь или совет, спасибо.

+0

Другими словами, как java представляет собой пакет Packet [Item [_]]? – LoranceChen

+0

Добавляет ли утилита в Scala параметр? Это может быть самым простым решением. Я не уверен, что вы можете представлять более высокие типы типов в Java вообще. –

+0

hi @ 0__, Item [_] должен представлять собой более высокий тип типа в Java. Кажется, я мог бы избежать Java-кода, возвращающего более высокий тип type.thanks в любом случае – LoranceChen

ответ

1

Иными словами, как java представляет собой пакет Scala [Item [_]]?

Это не так. Java просто не имеет более высоких типов. Информация о том, что MM является более высокой, скрыта внутри @ScalaSignature.

Когда вы пишете Packet<Item>, вы используете raw type (который, в свою очередь, не может быть представлен в Scala); вы не могли использовать Item<Something> внутри newPacketInJava.

+0

спасибо, я буду избегать больших типов добрых типов в java. Обсуждение о сыром типе кажется, что это была наследственная проблема. Счастливый новый год ~ – LoranceChen