From fb4704acc30aa8aaad858cd7fbefe9f4d15acca4 Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Mon, 2 Aug 2021 18:04:55 +0800 Subject: [PATCH] =?UTF-8?q?perf[reflection]:=20=E5=A2=9E=E5=8A=A0get?= =?UTF-8?q?=E5=92=8Cset=E6=96=B9=E6=B3=95=E7=9A=84=E8=A7=84=E5=88=99?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=B1=9E=E6=80=A7=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E4=B8=AA=E5=AD=97=E6=AF=8D=E6=98=AF=E5=B0=8F?= =?UTF-8?q?=E5=86=99=E4=B8=94=E7=AC=AC=E4=BA=8C=E4=B8=AA=E5=AD=97=E6=AF=8D?= =?UTF-8?q?=E5=A4=A7=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zfoo/protocol/util/ReflectionUtils.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/protocol/src/main/java/com/zfoo/protocol/util/ReflectionUtils.java b/protocol/src/main/java/com/zfoo/protocol/util/ReflectionUtils.java index 75759ccf..1fc797a1 100644 --- a/protocol/src/main/java/com/zfoo/protocol/util/ReflectionUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/util/ReflectionUtils.java @@ -317,6 +317,15 @@ public abstract class ReflectionUtils { // java的get方法对boolean值有可能对应get或者is,所以尝试获取两种不同的get方法,当两种都获取不到才抛异常 } + // 如果属性名的第一个字母是小写且第二个字母大写,那么该属性名直接用作 getter/setter。例如属性名为uName,对应的方法是getuName/setuName。 + // 如果属性名以大写字母开头,属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,对应的方法是getName/setName。 + methodName = "get" + fieldName; + try { + clazz.getDeclaredMethod(methodName, null); + return methodName; + } catch (NoSuchMethodException e) { + } + methodName = "is" + StringUtils.capitalize(fieldName); try { clazz.getDeclaredMethod(methodName, null); @@ -332,6 +341,13 @@ public abstract class ReflectionUtils { assertIsStandardFieldName(field); var methodName = "set" + StringUtils.capitalize(fieldName); + try { + clazz.getDeclaredMethod(methodName, field.getType()); + return methodName; + } catch (NoSuchMethodException e) { + } + + methodName = "set" + fieldName; try { clazz.getDeclaredMethod(methodName, field.getType()); return methodName;