簡體   English   中英

從Scala使用vararg參數覆蓋Java方法時發生AbstractMethodError

[英]AbstractMethodError when overriding a Java method with vararg parameter from Scala

我需要從使用vararg參數的Java接口中重寫Java方法:

public interface Function<T> {
    T apply(Object... var1);
}

當我嘗試實現該方法時,在Scala中應用如下所示

class ScalaFunction extends Function[String] {

  override def apply(args: Object*): String = args.toList match {
    // impl
  }

}

運行時出現“ java.lang.AbstractMethodError:空”錯誤。

這是我已經嘗試過的:

  1. 使用@varargs args Scala批注應生成Java友好的委托方法=>導致相同的錯誤
  2. 使用自行提供的委托方法

    def apply(args:Array [Object]):Unit = apply(args:_ *)

    這實際上已成功調用,但是我無法使用String作為返回類型,因為這樣編譯器會產生一個

錯誤:(13,7)雙重定義:def apply(args:Array [Object]):第20行的字符串並覆蓋def apply(args:AnyRef *):擦除后第13行的字符串具有相同的類型:(args:Array [對象])字符串

調用Java代碼如下所示:

Object[] args = //...
Object returnValue = function.apply(args);

有任何想法嗎?

有關示例,請參見此要點: https : //gist.github.com/mrueegg/f191e547bee6a24a6bcf

謝謝邁克爾

這個問題。 我沒有密切關注,但也許有人想添加信息。

暫無
暫無

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

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