static class Person {
String name;
ArrayList<Person> friends;
public Person(String name, ArrayList<Person> friends) {
this.name = name;
this.friends = friends;
}
}
static class Converter {
String raw;
Gson gson;
public Converter() {
this.gson = new Gson();
}
public <T> T get(Class<T> cls) {
return gson.fromJson(raw, cls);
}
public void set(String json) {
this.raw = json;
}
}
public static void main(String[] args) {
Gson gson = new Gson();
ArrayList<Person> friends = new ArrayList<>();
friends.add(new Person("craig", new ArrayList<Person>()));
friends.add(new Person("andrew", new ArrayList<Person>()));
Person alex = new Person(
"alex",
friends
);
String rawJson = gson.toJson(alex);
Converter c = new Converter();
c.set(rawJson);
Person p = c.get(Person.class); //This gives an incompatible type error
}
私はオブジェクトを返そうとしているクラスコンバーターを持っています。アイデアは未加工のjsonを与えて、それから(Person.class)を取得すると、Personオブジェクトを取得します。オブジェクトの代わりにメソッドからジェネリックオブジェクトを返す
これは問題の基本的な例ですが、get()メソッドはPersonオブジェクトではなくObjectを返すのはなぜですか?
私はそれが私のために働いたコードを試しました –
@KevinWallisはい私も持っています。今働いているようだ。わからない理由 –