2015-11-01 1 views
0

У меня есть этот интерфейс JavaScala Interop с методом Java переопределение с помощью объекта

public interface IFoo { 

    List<Map<String, Object>> getMaps() throws Exception; 
} 

как можно переопределить этот метод? я попробовал:

import scala.collection.JavaConverters._ 
class Foo extends IFoo{ 
override def getMaps: util.List[util.Map[String,AnyRef]] = { 
    List(Map("A" -> "B")).asJava 
    } 
} 

, но я получаю эту ошибку компиляции

переопределения метода getMaps в черте IFoo типа () java.util.List [java.util.Map [String, Object ]]; [ERROR] метод getMaps имеет несовместимый тип

я могу сделать что-то вроде:

import scala.collection.JavaConverters._ 
class Foo extends IFoo{ 
override def getMaps: util.List[util.Map[String,AnyRef]] = { 
    List(Map("A" -> "B".asInstanceOf[AnyRef)).asJava 
    } 
} 

Но это правильный путь?

ответ

1

Вы должны преобразовать Map в Java Map, а также, и есть лучший способ обеспечить тип значения:

List(Map[String, AnyRef]("A" -> "B").asJava).asJava 
1

Я не смог воспроизвести вашу ошибку overriding incompatible type. Но я получаю type mismatch внутри метода и эта проблема устранена в этом ответе.

class Foo extends IFoo{ 
    override def getMaps: util.List[util.Map[String,AnyRef]] = { 
    List(Map("A" -> "B").mapValues(x => x: AnyRef).asJava).asJava 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^