content: package com.alibaba.fastjson2.autoType;
  
  import com.alibaba.fastjson2.JSONB;
  import com.alibaba.fastjson2.JSONReader;
  import com.alibaba.fastjson2.JSONWriter;
  import org.junit.jupiter.api.Test;
  
  import java.util.*;
  
  import static org.junit.jupiter.api.Assertions.assertEquals;
  
  public class AutoTypeTest34_ListStr {
      @Test
      public void test_1() throws Exception {
          String str = "abcde";
          Bean bean = new Bean();
          bean.items = new LinkedList<>();
          bean.items.add(str);
          bean.items.add(str);
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      @Test
      public void test_2() throws Exception {
          Bean bean = new Bean();
          bean.items = Collections.singletonList("abc");
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      @Test
      public void test_3() throws Exception {
          Bean bean = new Bean();
          bean.items = Collections.singleton("abc");
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      @Test
      public void test_4() throws Exception {
          Bean bean = new Bean();
          bean.items = Arrays.asList("abc");
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      @Test
      public void test_5() throws Exception {
          ArrayList list = new ArrayList();
          list.add("abc");
  
          Bean bean = new Bean();
          bean.items = Collections.unmodifiableCollection(list);
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      public static class Bean {
          private Collection<String> items;
      }
  }
  