1

我正在使用 Gson 反序列化从抽象类继承的类。

这是我的代码:

public abstract class Mammal {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName(){
        return name;
    }
}

public class Dog extends Mammal {
    public void bark(){

    }
}

public class Cat extends Mammal{

    public void mew(){

    }
}

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        Mammal dog = new Dog();
        String toGson = gson.toJson(dog);
        Mammal aDog = gson.fromJson(toGson, Mammal.class);
    }
}

运行时抛出异常,有人可以告诉我如何解决这个问题吗?

4

1 回答 1

1

排队

Mammal aDog = gson.fromJson(toGson, Mammal.class);

您正在尝试反序列化为 Mammal 对象的实例,这是无法完成的,因为Mammal它是抽象类,这意味着它不能被实例化。

您需要abstract从类描述中删除关键字Mammal或使用非抽象类代替Dog.class

Mammal aDog = gson.fromJson(toGson, Dog.class);
于 2013-08-25T21:09:01.770 回答