Java说我没有覆盖,但是我的覆盖被告知它没有什么可以覆盖的

时间:2018-04-16 20:27:46

标签: java gson

我的代码如下:

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
我错过了什么?

1 个答案:

答案 0 :(得分:2)

注意:GSON 2.8.2将方法更改为public,因此升级将解决问题。

我在Eclipse中看到的错误消息提供了更多信息:

  

此类必须实现继承的抽象方法JsonElement.deepCopy(),但不能覆盖它,因为JsonElmExt 中看不到它。要么使类型抽象,要么使继承的方法可见

问题是抽象方法deepCopy() package-private ,有效防止了com.google.gson包之外的子类化。

JsonElement是一个抽象类,代表JSON元素类型:Objectsarrays和文字(nullprimitives:字符串,数字,truefalse)。

JSON没有更多类型,那么为什么要尝试创建第五种类型的JSON元素?重新思考你在做什么。

如果您需要帮助,请创建一个新问题,描述您尝试要执行的操作,因为您当前的问题是XY problem,即您要进入无论你真的需要做什么都是错误的方向。