Commit 9a384a2fc27cdd05465f21ee446d02aaaa12de02
1 parent
0b5c7f4c
解决 Byte[] 类型 to string 死循环的问题
Showing
1 changed file
with
55 additions
and
58 deletions
ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java
... | ... | @@ -7,10 +7,11 @@ import java.nio.charset.Charset; |
7 | 7 | import java.text.NumberFormat; |
8 | 8 | import java.util.Set; |
9 | 9 | import com.ruoyi.common.utils.StringUtils; |
10 | +import org.apache.commons.lang3.ArrayUtils; | |
10 | 11 | |
11 | 12 | /** |
12 | 13 | * 类型转换器 |
13 | - * | |
14 | + * | |
14 | 15 | * @author ruoyi |
15 | 16 | */ |
16 | 17 | public class Convert |
... | ... | @@ -19,7 +20,7 @@ public class Convert |
19 | 20 | * 转换为字符串<br> |
20 | 21 | * 如果给定的值为null,或者转换失败,返回默认值<br> |
21 | 22 | * 转换失败不会报错 |
22 | - * | |
23 | + * | |
23 | 24 | * @param value 被转换的值 |
24 | 25 | * @param defaultValue 转换错误时的默认值 |
25 | 26 | * @return 结果 |
... | ... | @@ -41,7 +42,7 @@ public class Convert |
41 | 42 | * 转换为字符串<br> |
42 | 43 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
43 | 44 | * 转换失败不会报错 |
44 | - * | |
45 | + * | |
45 | 46 | * @param value 被转换的值 |
46 | 47 | * @return 结果 |
47 | 48 | */ |
... | ... | @@ -54,7 +55,7 @@ public class Convert |
54 | 55 | * 转换为字符<br> |
55 | 56 | * 如果给定的值为null,或者转换失败,返回默认值<br> |
56 | 57 | * 转换失败不会报错 |
57 | - * | |
58 | + * | |
58 | 59 | * @param value 被转换的值 |
59 | 60 | * @param defaultValue 转换错误时的默认值 |
60 | 61 | * @return 结果 |
... | ... | @@ -78,7 +79,7 @@ public class Convert |
78 | 79 | * 转换为字符<br> |
79 | 80 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
80 | 81 | * 转换失败不会报错 |
81 | - * | |
82 | + * | |
82 | 83 | * @param value 被转换的值 |
83 | 84 | * @return 结果 |
84 | 85 | */ |
... | ... | @@ -91,7 +92,7 @@ public class Convert |
91 | 92 | * 转换为byte<br> |
92 | 93 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br> |
93 | 94 | * 转换失败不会报错 |
94 | - * | |
95 | + * | |
95 | 96 | * @param value 被转换的值 |
96 | 97 | * @param defaultValue 转换错误时的默认值 |
97 | 98 | * @return 结果 |
... | ... | @@ -129,7 +130,7 @@ public class Convert |
129 | 130 | * 转换为byte<br> |
130 | 131 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
131 | 132 | * 转换失败不会报错 |
132 | - * | |
133 | + * | |
133 | 134 | * @param value 被转换的值 |
134 | 135 | * @return 结果 |
135 | 136 | */ |
... | ... | @@ -142,7 +143,7 @@ public class Convert |
142 | 143 | * 转换为Short<br> |
143 | 144 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br> |
144 | 145 | * 转换失败不会报错 |
145 | - * | |
146 | + * | |
146 | 147 | * @param value 被转换的值 |
147 | 148 | * @param defaultValue 转换错误时的默认值 |
148 | 149 | * @return 结果 |
... | ... | @@ -180,7 +181,7 @@ public class Convert |
180 | 181 | * 转换为Short<br> |
181 | 182 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
182 | 183 | * 转换失败不会报错 |
183 | - * | |
184 | + * | |
184 | 185 | * @param value 被转换的值 |
185 | 186 | * @return 结果 |
186 | 187 | */ |
... | ... | @@ -193,7 +194,7 @@ public class Convert |
193 | 194 | * 转换为Number<br> |
194 | 195 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
195 | 196 | * 转换失败不会报错 |
196 | - * | |
197 | + * | |
197 | 198 | * @param value 被转换的值 |
198 | 199 | * @param defaultValue 转换错误时的默认值 |
199 | 200 | * @return 结果 |
... | ... | @@ -227,7 +228,7 @@ public class Convert |
227 | 228 | * 转换为Number<br> |
228 | 229 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
229 | 230 | * 转换失败不会报错 |
230 | - * | |
231 | + * | |
231 | 232 | * @param value 被转换的值 |
232 | 233 | * @return 结果 |
233 | 234 | */ |
... | ... | @@ -240,7 +241,7 @@ public class Convert |
240 | 241 | * 转换为int<br> |
241 | 242 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
242 | 243 | * 转换失败不会报错 |
243 | - * | |
244 | + * | |
244 | 245 | * @param value 被转换的值 |
245 | 246 | * @param defaultValue 转换错误时的默认值 |
246 | 247 | * @return 结果 |
... | ... | @@ -278,7 +279,7 @@ public class Convert |
278 | 279 | * 转换为int<br> |
279 | 280 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
280 | 281 | * 转换失败不会报错 |
281 | - * | |
282 | + * | |
282 | 283 | * @param value 被转换的值 |
283 | 284 | * @return 结果 |
284 | 285 | */ |
... | ... | @@ -289,7 +290,7 @@ public class Convert |
289 | 290 | |
290 | 291 | /** |
291 | 292 | * 转换为Integer数组<br> |
292 | - * | |
293 | + * | |
293 | 294 | * @param str 被转换的值 |
294 | 295 | * @return 结果 |
295 | 296 | */ |
... | ... | @@ -300,7 +301,7 @@ public class Convert |
300 | 301 | |
301 | 302 | /** |
302 | 303 | * 转换为Long数组<br> |
303 | - * | |
304 | + * | |
304 | 305 | * @param str 被转换的值 |
305 | 306 | * @return 结果 |
306 | 307 | */ |
... | ... | @@ -311,7 +312,7 @@ public class Convert |
311 | 312 | |
312 | 313 | /** |
313 | 314 | * 转换为Integer数组<br> |
314 | - * | |
315 | + * | |
315 | 316 | * @param split 分隔符 |
316 | 317 | * @param split 被转换的值 |
317 | 318 | * @return 结果 |
... | ... | @@ -334,7 +335,7 @@ public class Convert |
334 | 335 | |
335 | 336 | /** |
336 | 337 | * 转换为Long数组<br> |
337 | - * | |
338 | + * | |
338 | 339 | * @param split 分隔符 |
339 | 340 | * @param str 被转换的值 |
340 | 341 | * @return 结果 |
... | ... | @@ -357,7 +358,7 @@ public class Convert |
357 | 358 | |
358 | 359 | /** |
359 | 360 | * 转换为String数组<br> |
360 | - * | |
361 | + * | |
361 | 362 | * @param str 被转换的值 |
362 | 363 | * @return 结果 |
363 | 364 | */ |
... | ... | @@ -368,7 +369,7 @@ public class Convert |
368 | 369 | |
369 | 370 | /** |
370 | 371 | * 转换为String数组<br> |
371 | - * | |
372 | + * | |
372 | 373 | * @param split 分隔符 |
373 | 374 | * @param split 被转换的值 |
374 | 375 | * @return 结果 |
... | ... | @@ -382,7 +383,7 @@ public class Convert |
382 | 383 | * 转换为long<br> |
383 | 384 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
384 | 385 | * 转换失败不会报错 |
385 | - * | |
386 | + * | |
386 | 387 | * @param value 被转换的值 |
387 | 388 | * @param defaultValue 转换错误时的默认值 |
388 | 389 | * @return 结果 |
... | ... | @@ -421,7 +422,7 @@ public class Convert |
421 | 422 | * 转换为long<br> |
422 | 423 | * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br> |
423 | 424 | * 转换失败不会报错 |
424 | - * | |
425 | + * | |
425 | 426 | * @param value 被转换的值 |
426 | 427 | * @return 结果 |
427 | 428 | */ |
... | ... | @@ -434,7 +435,7 @@ public class Convert |
434 | 435 | * 转换为double<br> |
435 | 436 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
436 | 437 | * 转换失败不会报错 |
437 | - * | |
438 | + * | |
438 | 439 | * @param value 被转换的值 |
439 | 440 | * @param defaultValue 转换错误时的默认值 |
440 | 441 | * @return 结果 |
... | ... | @@ -473,7 +474,7 @@ public class Convert |
473 | 474 | * 转换为double<br> |
474 | 475 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
475 | 476 | * 转换失败不会报错 |
476 | - * | |
477 | + * | |
477 | 478 | * @param value 被转换的值 |
478 | 479 | * @return 结果 |
479 | 480 | */ |
... | ... | @@ -486,7 +487,7 @@ public class Convert |
486 | 487 | * 转换为Float<br> |
487 | 488 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
488 | 489 | * 转换失败不会报错 |
489 | - * | |
490 | + * | |
490 | 491 | * @param value 被转换的值 |
491 | 492 | * @param defaultValue 转换错误时的默认值 |
492 | 493 | * @return 结果 |
... | ... | @@ -524,7 +525,7 @@ public class Convert |
524 | 525 | * 转换为Float<br> |
525 | 526 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
526 | 527 | * 转换失败不会报错 |
527 | - * | |
528 | + * | |
528 | 529 | * @param value 被转换的值 |
529 | 530 | * @return 结果 |
530 | 531 | */ |
... | ... | @@ -537,7 +538,7 @@ public class Convert |
537 | 538 | * 转换为boolean<br> |
538 | 539 | * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br> |
539 | 540 | * 转换失败不会报错 |
540 | - * | |
541 | + * | |
541 | 542 | * @param value 被转换的值 |
542 | 543 | * @param defaultValue 转换错误时的默认值 |
543 | 544 | * @return 结果 |
... | ... | @@ -583,7 +584,7 @@ public class Convert |
583 | 584 | * 转换为boolean<br> |
584 | 585 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
585 | 586 | * 转换失败不会报错 |
586 | - * | |
587 | + * | |
587 | 588 | * @param value 被转换的值 |
588 | 589 | * @return 结果 |
589 | 590 | */ |
... | ... | @@ -595,7 +596,7 @@ public class Convert |
595 | 596 | /** |
596 | 597 | * 转换为Enum对象<br> |
597 | 598 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
598 | - * | |
599 | + * | |
599 | 600 | * @param clazz Enum的Class |
600 | 601 | * @param value 值 |
601 | 602 | * @param defaultValue 默认值 |
... | ... | @@ -631,7 +632,7 @@ public class Convert |
631 | 632 | /** |
632 | 633 | * 转换为Enum对象<br> |
633 | 634 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
634 | - * | |
635 | + * | |
635 | 636 | * @param clazz Enum的Class |
636 | 637 | * @param value 值 |
637 | 638 | * @return Enum |
... | ... | @@ -645,7 +646,7 @@ public class Convert |
645 | 646 | * 转换为BigInteger<br> |
646 | 647 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
647 | 648 | * 转换失败不会报错 |
648 | - * | |
649 | + * | |
649 | 650 | * @param value 被转换的值 |
650 | 651 | * @param defaultValue 转换错误时的默认值 |
651 | 652 | * @return 结果 |
... | ... | @@ -683,7 +684,7 @@ public class Convert |
683 | 684 | * 转换为BigInteger<br> |
684 | 685 | * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br> |
685 | 686 | * 转换失败不会报错 |
686 | - * | |
687 | + * | |
687 | 688 | * @param value 被转换的值 |
688 | 689 | * @return 结果 |
689 | 690 | */ |
... | ... | @@ -696,7 +697,7 @@ public class Convert |
696 | 697 | * 转换为BigDecimal<br> |
697 | 698 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
698 | 699 | * 转换失败不会报错 |
699 | - * | |
700 | + * | |
700 | 701 | * @param value 被转换的值 |
701 | 702 | * @param defaultValue 转换错误时的默认值 |
702 | 703 | * @return 结果 |
... | ... | @@ -742,7 +743,7 @@ public class Convert |
742 | 743 | * 转换为BigDecimal<br> |
743 | 744 | * 如果给定的值为空,或者转换失败,返回默认值<br> |
744 | 745 | * 转换失败不会报错 |
745 | - * | |
746 | + * | |
746 | 747 | * @param value 被转换的值 |
747 | 748 | * @return 结果 |
748 | 749 | */ |
... | ... | @@ -754,7 +755,7 @@ public class Convert |
754 | 755 | /** |
755 | 756 | * 将对象转为字符串<br> |
756 | 757 | * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 |
757 | - * | |
758 | + * | |
758 | 759 | * @param obj 对象 |
759 | 760 | * @return 字符串 |
760 | 761 | */ |
... | ... | @@ -766,7 +767,7 @@ public class Convert |
766 | 767 | /** |
767 | 768 | * 将对象转为字符串<br> |
768 | 769 | * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 |
769 | - * | |
770 | + * | |
770 | 771 | * @param obj 对象 |
771 | 772 | * @param charsetName 字符集 |
772 | 773 | * @return 字符串 |
... | ... | @@ -779,28 +780,24 @@ public class Convert |
779 | 780 | /** |
780 | 781 | * 将对象转为字符串<br> |
781 | 782 | * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 |
782 | - * | |
783 | + * | |
783 | 784 | * @param obj 对象 |
784 | 785 | * @param charset 字符集 |
785 | 786 | * @return 字符串 |
786 | 787 | */ |
787 | - public static String str(Object obj, Charset charset) | |
788 | - { | |
789 | - if (null == obj) | |
790 | - { | |
788 | + public static String str(Object obj, Charset charset) { | |
789 | + if (null == obj) { | |
791 | 790 | return null; |
792 | 791 | } |
793 | 792 | |
794 | - if (obj instanceof String) | |
795 | - { | |
793 | + if (obj instanceof String) { | |
796 | 794 | return (String) obj; |
797 | - } | |
798 | - else if (obj instanceof byte[] || obj instanceof Byte[]) | |
799 | - { | |
800 | - return str((Byte[]) obj, charset); | |
801 | - } | |
802 | - else if (obj instanceof ByteBuffer) | |
803 | - { | |
795 | + } else if (obj instanceof byte[]) { | |
796 | + return str((byte[]) obj, charset); | |
797 | + } else if (obj instanceof Byte[]) { | |
798 | + byte[] bytes = ArrayUtils.toPrimitive((Byte[]) obj); | |
799 | + return str(bytes, charset); | |
800 | + } else if (obj instanceof ByteBuffer) { | |
804 | 801 | return str((ByteBuffer) obj, charset); |
805 | 802 | } |
806 | 803 | return obj.toString(); |
... | ... | @@ -808,7 +805,7 @@ public class Convert |
808 | 805 | |
809 | 806 | /** |
810 | 807 | * 将byte数组转为字符串 |
811 | - * | |
808 | + * | |
812 | 809 | * @param bytes byte数组 |
813 | 810 | * @param charset 字符集 |
814 | 811 | * @return 字符串 |
... | ... | @@ -820,7 +817,7 @@ public class Convert |
820 | 817 | |
821 | 818 | /** |
822 | 819 | * 解码字节码 |
823 | - * | |
820 | + * | |
824 | 821 | * @param data 字符串 |
825 | 822 | * @param charset 字符集,如果此字段为空,则解码的结果取决于平台 |
826 | 823 | * @return 解码后的字符串 |
... | ... | @@ -841,7 +838,7 @@ public class Convert |
841 | 838 | |
842 | 839 | /** |
843 | 840 | * 将编码的byteBuffer数据转换为字符串 |
844 | - * | |
841 | + * | |
845 | 842 | * @param data 数据 |
846 | 843 | * @param charset 字符集,如果为空使用当前系统字符集 |
847 | 844 | * @return 字符串 |
... | ... | @@ -858,7 +855,7 @@ public class Convert |
858 | 855 | |
859 | 856 | /** |
860 | 857 | * 将编码的byteBuffer数据转换为字符串 |
861 | - * | |
858 | + * | |
862 | 859 | * @param data 数据 |
863 | 860 | * @param charset 字符集,如果为空使用当前系统字符集 |
864 | 861 | * @return 字符串 |
... | ... | @@ -875,7 +872,7 @@ public class Convert |
875 | 872 | // ----------------------------------------------------------------------- 全角半角转换 |
876 | 873 | /** |
877 | 874 | * 半角转全角 |
878 | - * | |
875 | + * | |
879 | 876 | * @param input String. |
880 | 877 | * @return 全角字符串. |
881 | 878 | */ |
... | ... | @@ -886,7 +883,7 @@ public class Convert |
886 | 883 | |
887 | 884 | /** |
888 | 885 | * 半角转全角 |
889 | - * | |
886 | + * | |
890 | 887 | * @param input String |
891 | 888 | * @param notConvertSet 不替换的字符集合 |
892 | 889 | * @return 全角字符串. |
... | ... | @@ -917,7 +914,7 @@ public class Convert |
917 | 914 | |
918 | 915 | /** |
919 | 916 | * 全角转半角 |
920 | - * | |
917 | + * | |
921 | 918 | * @param input String. |
922 | 919 | * @return 半角字符串 |
923 | 920 | */ |
... | ... | @@ -928,7 +925,7 @@ public class Convert |
928 | 925 | |
929 | 926 | /** |
930 | 927 | * 替换全角为半角 |
931 | - * | |
928 | + * | |
932 | 929 | * @param text 文本 |
933 | 930 | * @param notConvertSet 不替换的字符集合 |
934 | 931 | * @return 替换后的字符 |
... | ... | @@ -960,7 +957,7 @@ public class Convert |
960 | 957 | |
961 | 958 | /** |
962 | 959 | * 数字金额大写转换 先写个完整的然后将如零拾替换成零 |
963 | - * | |
960 | + * | |
964 | 961 | * @param n 数字 |
965 | 962 | * @return 中文大写数字 |
966 | 963 | */ |
... | ... |