не может быть приведен к java.lang. Сопоставим при сортировке составного json - PullRequest
0 голосов
/ 04 декабря 2018

Постановка задачи: я пытаюсь отсортировать составной класс, используя сопоставимые и collection.sort, но получаю исключение.

class BmetData implements Comparable<BmetData>{ Long mId;
String mName;
String mPath;
String frequency;
List<MValue> mValues;

public int compareTo(BmetData o) {
    return mId.compareTo(o.mId);
}} 

Подкласс -

class MValue implements Comparable<MValue> { Date startTimeInMillis;
Long current;
Long min;
Long max;
Long count;
Long sum;

Long value;

public int compareTo(MValue o) {
    return startTimeInMillis.compareTo(o.startTimeInMillis);
}}

Я получаю список ответов BmetData из API, обрабатываю строку ответа API, используя метод -

public static <T> List<T> getJavaListFromJson(ApiResponseHolder apiResponse, Class<T> clazz) {

    if (apiResponse.getResponseCode() == 200) {

        Gson gson = new Gson();
        TypeToken<List<T>> token = new TypeToken<List<T>>() {
        };
        List<T> pojoList = gson.fromJson(apiResponse.getMessage(), token.getType());
        return pojoList;
    } else {

        return null;
    }
}

, который возвращает меня List<BmetData> list Теперь пытаемся отсортировать его с помощью Collections.sort (list), получая исключение -

Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Comparable at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320) at java.util.ComparableTimSort.sort(ComparableTimSort.java:188) at java.util.Arrays.sort(Arrays.java:1312) at java.util.Arrays.sort(Arrays.java:1506) at java.util.ArrayList.sort(ArrayList.java:1462) at java.util.Collections.sort(Collections.java:141) at Helper.ApiExecuterUsingToken.main(ApiExecuterUsingToken.java:70)

1 Ответ

0 голосов
/ 05 декабря 2018

Вместо сопоставимого используйте Comparator для сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...