Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson / 10 сообщений из 10, страница 1 из 1
26.04.2018, 11:25
    #39636635
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
в общем есть такой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.HashSet;
import org.junit.Assert;
import org.junit.Test;

public class LibraryJsonTest {

    private enum ABC {A}

    private HashSet<ABC> abcs;

    @Test
    public void stupidTest() {
        abcs = new HashSet<>();
        abcs.add(ABC.A);
        Gson gson = new GsonBuilder().create();
        String str = gson.toJson(abcs);
        abcs = gson.fromJson(str, (new HashSet<ABC>()).getClass());
        Assert.assertTrue(abcs.contains(ABC.A));
    }
}



тест падает, хотя в abcs есть 1 элемент. Никак не могу понять, почему оно не работает(. Что там за элемент если это enum и он не A?
...
Рейтинг: 0 / 0
26.04.2018, 11:27
    #39636639
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
YouTube Video
...
Рейтинг: 0 / 0
26.04.2018, 11:51
    #39636653
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Blazkowicz,

там получается в Set два элемента A с разными хешкодами. А у enum хешкод не переопределяется. Вот и вопрос, как в enum из 1 элемента может быть их 2 ?
...
Рейтинг: 0 / 0
26.04.2018, 11:57
    #39636661
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Код: java
1.
System.out.println(abcs.iterator().next().getClass());
...
Рейтинг: 0 / 0
26.04.2018, 11:57
    #39636662
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Вам всё ещё нужно изучать отладчик.
...
Рейтинг: 0 / 0
26.04.2018, 12:02
    #39636667
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Blazkowicz,

а, там String... понятно, спасибо
...
Рейтинг: 0 / 0
26.04.2018, 12:06
    #39636669
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
т.е. получается после компиляции класс HashSet<ABC> превращается в обычный HashSet со стингами. И туда можно добавлять любую строку, главное обмануть компилятор)
...
Рейтинг: 0 / 0
26.04.2018, 12:10
    #39636672
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Компилятор не обманешь. Он предупреждение таки напишет.
...
Рейтинг: 0 / 0
26.04.2018, 12:13
    #39636676
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Код: java
1.
2.
3.
4.
5.
6.
        abcs = EnumSet.of(ABC.A);
        Gson gson = new GsonBuilder()
            .create();
        String str = gson.toJson(abcs);
        EnumSet<ABC> fromJson = gson.fromJson(str, new TypeToken<EnumSet<ABC>>() {}.getType());
        Assert.assertTrue(fromJson.contains(ABC.A));
...
Рейтинг: 0 / 0
26.04.2018, 12:24
    #39636689
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
Blazkowicz,

спасибо большое
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]