구현 Java 인터페이스는 스칼라에서 결과에서는 호환되지 않는 형식 지도

0

질문

I have a Java 인터페이스는 구현하고자하는 스칼라. 인터페이스는 다음과 같은 방법을 포함하 선언:

 List<Map<String, Object>> xyz(Map<String, Object> var1, Map<String, Object> var2);

내 Scala 구현:

override def testComponent( input: java.util.Map[String, Object], metadata: java.util.Map[String, Object] )
  {

    val list: util.List[Map[String, AnyRef]] = new util.ArrayList[Map[String, AnyRef]]

     return list
  }

오류:재정의하는 방법에 xyz 특성 ITester 의 유형($x1:java.util.지도[String,Object],x$2:java.util.지도[String,Object])java.util.목록[java.util.지도[String,Object]]; 방법 testComponent 는 호환되지 않는 형식 override def testComponent(입력:java.util.지도[String,Object],메타데이터:java.util.지도[String,Object])

지 정확히 알고 있습니다.

interface java scala scala-java-interop
2021-11-20 13:48:55
1

최고의 응답

3

의 정의 testComponent 은 유형 Unit 기 때문에 그것을 사용하여 정의(사용되지 않의 최신 버전에서 스칼라)절차를 구문의 def name(args) { } (즉,아무 = {). 그것은 첫 번째 패스 컴파일하기 때문에 스칼라 허용 값을 삭제 될 때 Unit 예상(는 행동을 만들 수 있습니다 경고와 함께 컴파일러 옵션 -Ywarn-value-discard). 를 해결할 수 있는 이여 명시되는 원하는 이 방법을 사용할 값을 포함하여 =.

override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object]) = {
  val list: util.List[Map[String, AnyRef]] = new util.ArrayList[Map[String, AnyRef]]
  list  // return should be avoided in Scala: it's not necessary and can introduce some really subtle bugs
}

그것은 일반적으로 좋은 아이디어 명시적인 결과에 대한 유형의 공중 방법입니다. 또한,이해도 작동:

override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object]) =
  new ArrayList[Map[String, AnyRef]]
2021-11-22 00:21:31

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................