package com.xiaoleilu.hutool.core.convert; import org.junit.Assert; import org.junit.Test; import com.xiaoleilu.hutool.convert.Converter; import com.xiaoleilu.hutool.convert.ConverterRegistry; import com.xiaoleilu.hutool.convert.impl.ArrayConverter; /** * ConverterRegistry 单元测试 * @author Looly * */ public class ConverterRegistryTest { @Test public void convertTest(){ int[] a = new int[]{1,2,3,4}; ConverterRegistry converterRegistry = ConverterRegistry.getInstance(); long[] result = converterRegistry.convert(long[].class, a); Assert.assertArrayEquals(new long[]{1L, 2L, 3L, 4L}, result); } @Test public void arrayConverterTest(){ String arrayStr = "1,2,3,4,5"; //获取Converter类的方法1,从ConverterRegistry单例对象中查找 Converter<Integer[]> c = ConverterRegistry.getInstance().getDefaultConverter(Integer[].class); Integer[] result = c.convert(arrayStr, null); Assert.assertArrayEquals(new Integer[]{1,2,3,4,5}, result); //获取Converter类的方法2,自己实例化相应Converter对象 ArrayConverter<Integer> c2 = new ArrayConverter<>(Integer.class); Integer[] result2 = c2.convert(arrayStr, null); Assert.assertArrayEquals(new Integer[]{1,2,3,4,5}, result2); } @Test public void customTest(){ int a = 454553; ConverterRegistry converterRegistry = ConverterRegistry.getInstance(); //此处做为示例自定义CharSequence转换,因为Hutool中已经提供CharSequence转换,请尽量不要替换 //替换可能引发关联转换异常(例如覆盖CharSequence转换会影响全局) converterRegistry.putCustom(CharSequence.class, CustomConverter.class); CharSequence result = converterRegistry.convert(CharSequence.class, a); Assert.assertEquals("Custom: 454553", result); } public static class CustomConverter implements Converter<CharSequence>{ @Override public CharSequence convert(Object value, CharSequence defaultValue) throws IllegalArgumentException { return "Custom: " + value.toString(); } } }