не удается найти токен типа символа в Android Studio?

#android

#Android

Вопрос:

 private void loadFromAndToPlaceValues() {


        String str = loadJSONFromAsset();
        this.places = (List)new Gson().fromJson(str, newTypeToken<List<BusEntity>>().getType());
        if (this.places != null amp;amp; this.places.size() > 0) {
            this.places_array = new String[this.places.size()];
            for (int i = 0; i < this.places_array.length; i  ) {
                this.places_array[i] = ((BusEntity) this.places.get(i)).getValue();
            }
        }
    }
  

Комментарии:

1. пожалуйста, добавьте вопрос о регистрации. также правильное описание.

Ответ №1:

Вы пропустили {} фигурные скобки. Измените его следующим образом.

 this.places = (List)new Gson().fromJson(str, new TypeToken<List<BusEntity>>(){}.getType());
  

С другой стороны, вопрос должен быть более конструктивным и описательным. Публикация простого кода, вероятно, в большинстве случаев не даст хорошего ответа.

Ответ №2:

Это может помочь вам :

Вариант 1 — самостоятельно внедрите java.lang.reflect.ParameterizedType и передайте его в Gson.

 private static class ListParameterizedType implements ParameterizedType {

    private Type type;

    private ListParameterizedType(Type type) {
        this.type = type;
    }

    @Override
    public Type[] getActualTypeArguments() {
        return new Type[] {type};
    }

    @Override
    public Type getRawType() {
        return ArrayList.class;
    }

    @Override
    public Type getOwnerType() {
        return null;
    }

    // implement equals method too! (as per javadoc)
}
  

Тогда просто:

 Type type = new ListParameterizedType(clazz);
List<T> list = gson.fromJson(json, type);
  

Это тоже будет работать, по крайней мере, с Gson 2.2.4.

 Type type = com.google.gson.internal.$Gson$Types.newParameterizedTypeWithOwner(null, ArrayList.class, clazz);