簡體   English   中英

Scala覆蓋Java類方法

[英]scala override java class method

我有一個具有以下方法的Java類:

class JavaContextObject {
...
public String[] getContext(int index, String[] tokens, String[] preds, Object[] additionalContext)
...

}

並且我想在我的scala類中重寫此方法,我嘗試了以下簽名:

override def getContext(index: Int, tokens: Array[String], preds: Array[String], additionalContext: Array[AnyRef]): Array[String] = ???

要么

override def getContext(index: Int, tokens: Array[String], preds: Array[String], additionalContext: Array[Object]): Array[String] = ???

並收到以下我不理解的編譯錯誤:

class ScalaContextObject needs to be abstract, since method getContext in trait BeamSearchContextGenerator of type (x$1: Int, x$2: Array[String], x$3: Array[String], x$4: Array[Object])Array[String] is not defined
(Note that Array[T with Object] does not match Array[String]: their type parameters differ)
  class ScalaContextObject {

其中BeamSearchContextGenerator-是JavaContextObject已經實現的特征

public interface BeamSearchContextGenerator<T> {
  public String[] getContext(int index, T[] sequence, String[] priorDecisions, Object[] additionalContext);
}

我的問題是此錯誤是什么意思,以及如何避免它?

問題導致Java不支持通用數組。 使用T[]是一種不好的做法,因此,如果有可能,請將其替換為通用類型,例如List<T>

暫無
暫無

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

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