From 2b90e709749d1859529cecd047cd3e030daa2228 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 22 Jul 2017 21:29:25 +0800 Subject: [PATCH] optimized code. --- .../fastjson/parser/JavaBeanDeserializer.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/alibaba/fastjson/parser/JavaBeanDeserializer.java b/src/main/java/com/alibaba/fastjson/parser/JavaBeanDeserializer.java index 326d2d9fc..db349f223 100755 --- a/src/main/java/com/alibaba/fastjson/parser/JavaBeanDeserializer.java +++ b/src/main/java/com/alibaba/fastjson/parser/JavaBeanDeserializer.java @@ -930,20 +930,31 @@ public class JavaBeanDeserializer implements ObjectDeserializer { fieldDeserializer = fieldDeser; break; } - - if (startsWithIs // - && (fieldClass == boolean.class || fieldClass == Boolean.class) // - && fieldName.equalsIgnoreCase(key.substring(2))) { - fieldDeserializer = fieldDeser; - break; - } char[] fieldSmartMatchKey = fieldDeser.smartMatchKey; if (fieldSmartMatchKey == null) { fieldSmartMatchKey = buildSmartKey(fieldName); fieldDeser.smartMatchKey = fieldSmartMatchKey; } - if (Arrays.equals(smartKey, fieldSmartMatchKey)) { + + boolean eq = smartKey.length == fieldSmartMatchKey.length; + if (eq) { + for (int i = 0; i < smartKey.length; ++i) { + if (smartKey[i] != fieldSmartMatchKey[i]) { + eq = false; + break; + } + } + } + + if (eq) { + fieldDeserializer = fieldDeser; + break; + } + + if (startsWithIs // + && (fieldClass == boolean.class || fieldClass == Boolean.class) // + && fieldName.equalsIgnoreCase(key.substring(2))) { fieldDeserializer = fieldDeser; break; }