我的代码如下:
import com.google.gson.JsonElement;
public class JsonElmExt extends JsonElement
{
@Override
public JsonElmExt deepCopy()
{
return null;
}
}
但我收到以下错误:
JsonElmExt is not abstract and does not override abstract method deepCopy() in JsonElement
method does not override or implement a method from a supertype
我很困惑,因为我的代码类似于库本身如何覆盖deepCopy():https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonObject.java
我错过了什么?
答案 0 :(得分:2)
注意:GSON 2.8.2将方法更改为public
,因此升级将解决问题。
我在Eclipse中看到的错误消息提供了更多信息:
此类必须实现继承的抽象方法
JsonElement.deepCopy()
,但不能覆盖它,因为从JsonElmExt
中看不到它。要么使类型抽象,要么使继承的方法可见
问题是抽象方法deepCopy()
是 package-private ,有效防止了com.google.gson
包之外的子类化。
JsonElement
是一个抽象类,代表JSON元素类型:Objects,arrays和文字(null
和primitives:字符串,数字,true
和false
)。
JSON没有更多类型,那么为什么要尝试创建第五种类型的JSON元素?重新思考你在做什么。
如果您需要帮助,请创建一个新问题,描述您尝试要执行的操作,因为您当前的问题是XY problem,即您要进入无论你真的需要做什么都是错误的方向。