[英]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.