[英]scala - Cannot override protected variable of java class
我試圖覆蓋看起來像這樣的Java類
public class ExampleJava {
public ExampleJava(String string) {
}
protected String string;
}
當我使用
class ExampleScala(string : String) {
@Override
protected override def string : String
}
在Scala中,編譯器給出錯誤:
Error:(5, 7) overriding method string in class ExampleScala of type =>
java.lang.String;
variable string in class ExampleJava of type net.java.lang.String has incompatible
type;
(Note that method string in class ExampleJava of type => java.lang.String is
abstract,
and is therefore overridden by concrete variable string in class ExampleJava of type
java.lang.String)
class ExampleScala(material : Material) extends ExampleJava(string : String) {
^
更新:我不能修改ExampleJava,因為它在正在擴展的程序中,如果發布了它,它將無法正常工作
您不會在Scala中使用@Override
; 只有Java編譯器知道它。 在Scala中,改用了override
。
protected String string;
在ExampleJava
中,由於它是一個字段,因此完全不能覆蓋它。 如果您希望它是可重寫的,則需要編寫
private String string; protected String string() { return string; }
代替。 您還需要ExampleScala
的實際實現。
您不能@Override
字段成員,只能覆蓋方法,它只是一個注釋,可確保在編譯時確實是覆蓋方法
指示方法聲明旨在覆蓋超類中的方法聲明。 如果使用此注釋類型對方法進行注釋但未覆蓋超類方法,則要求編譯器生成錯誤消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.