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

Код: 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
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636639
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouTube Video
...
Рейтинг: 0 / 0
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636653
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

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

а, там String... понятно, спасибо
...
Рейтинг: 0 / 0
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636669
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. получается после компиляции класс HashSet<ABC> превращается в обычный HashSet со стингами. И туда можно добавлять любую строку, главное обмануть компилятор)
...
Рейтинг: 0 / 0
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636672
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компилятор не обманешь. Он предупреждение таки напишет.
...
Рейтинг: 0 / 0
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636676
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
не находит Element в Set<Enum> считаном из Json через com.google.gson.Gson
    #39636689
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

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


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