簡體   English   中英

擴展Java類時實例化Scala中的嵌套類

[英]Instantiate nested class in Scala when extending Java class

我有抽象的Java類,其中包含聲明為protected static嵌套類:

public abstract class AbstractJavaClass {
  // contains nested class
  protected static class InnerClass {
  ...
  }
}

當我試圖在Scala類中實例化它擴展AbstractJavaClass時,就像在Java中一樣(即,僅在方法new InnerClass中引用名稱):

class ScalaClass extends AbstractJavaClass {
   def method = new InnerClass()
}

我收到錯誤: InnerClass類型不是ScalaClass的成員 我究竟做錯了什么? 在Java中也可以正常工作。

偶然發現: 在scala中訪問java基類的靜態成員

它說

This isn't possible in Scala. Since Scala has no notation of static you can't
access protected static members of a parent class. This is a known limitation.

盡管我無法解決最初的問題(當類protected static ),但是當我在AbstractJavaClass定義中將其更改為public static時,我可以通過以下方式使用它:

class ScalaClass extends AbstractJavaClass {
  import AbstractJavaClass.InnerClass

  def method = new InnerClass
}

使用new InnerClass無進出口給出了同樣的錯誤。

暫無
暫無

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

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