Как бороться с классификацией Java x Scala?

#java #scala #inheritance

#java #scala #наследование

Вопрос:

У меня возникла проблема с использованием Scala x Java.

Чтобы рассказать вам о ситуации, позвольте мне привести краткий пример:

  • Класс Java
 public class Animal {
}
  
  • Класс Java
 public class Cat extends Animal {
}
  
  • Класс Scala
 class Dog extends Animal {
}
  
  • Класс Java
 class Main {
  public static void main(String[] args) {
    Animal animal1 = new Dog(); //Java's Animal receives Scala's Dog reference
    Animal animal2 = new Cat(); //Java's Animal receives a Java's Cat reference
  }
}
  

Я получаю сообщение об ошибке типа:

 Type mismatch: cannot convert from Dog to Animal
  

Но то же самое не происходит с классом Cat.

Кто-нибудь мог бы любезно объяснить мне, что здесь происходит?

Комментарии:

1. Не воспроизводимо. Компилируется просто отлично. Кажется, вы упростили свою проблему до небытия.

2. Какие версии scala и java вы используете? Даже я не получаю никаких ошибок

3. Привет! Я использую Scala 2.11.0. Странно то, что происходит в моей среде разработки Eclipse. Я пересмотрю свой путь сборки, чтобы проверить, все ли в порядке.

Ответ №1:

Ваш код должен работать при использовании следующих версий JDK и Scala: https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html

Ответ №2:

По какой-то причине я перезагрузил свой компьютер, и это сработало. Похоже, у меня возникла проблема в моем пути к классу.