簡體   English   中英

在scala中實現通用接口

[英]implement generic generic interface in scala

從scala,我需要創建一個java對象,因為它有一個方法需要一個通用接口的參數

Java類

public class JavaTest<T> {
    public List<T> add(IJavaTest<T> javaTest){
        return null;
    }
}

Java接口

public interface IJavaTest<T> {
    String ss();
}

在scala中,我實現了這一點:

val javaTest = new JavaTest

class TMijavatest[T] extends IJavaTest[T] {
  override def ss(): String = ""
}

val foo=new TMijavatest()

但是當我調用add方法時

javaTest.add(foo);

我在intellij中遇到此錯誤:類型不匹配,應為:IJavaTest [T],實際的TMijavatest [無]

有:

javaTest.add(foo.asInstanceOf);

它可以編譯我,但在執行時出現此錯誤:

服務器中發生意外錯誤。 由以下原因引起:java.lang.ClassCastException:my.pakage.Test $ TMijavatest $ 1無法轉換為scala.runtime.Nothing $

如果我像這樣生成foo對象:

 val foo = new TMijavatest[String]
 javaTest.add(foo);

我在intellij中遇到此錯誤:類型不匹配,應為:IJavaTest [T],實際的TMijavatest [String]

我該怎么做? 謝謝

您應該使用類型實例化JavaTest和TMijavatest

val javaTest = new JavaTest[String]

class TMijavatest[T] extends IJavaTest[T] {
  override def ss(): String = ""
}

val foo = new TMijavatest[String]

javaTest.add(foo)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM