From 3c645b4c7f9a491d2f50e5098a237a93fc234e90 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sat, 9 Jun 2018 10:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DRest=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/net/http/Rest.java | 3 +++ src/org/redkale/util/Creator.java | 1 + 2 files changed, 4 insertions(+) diff --git a/src/org/redkale/net/http/Rest.java b/src/org/redkale/net/http/Rest.java index 1544c17b7..3df9f9556 100644 --- a/src/org/redkale/net/http/Rest.java +++ b/src/org/redkale/net/http/Rest.java @@ -401,6 +401,7 @@ public final class Rest { Set paramnames = new HashSet<>(); String methodesc = method.getName() + ":" + Type.getMethodDescriptor(method); List names = asmParamMap.get(methodesc); + if (names != null) while (names.remove(" ")); //删掉空元素 Parameter[] params = method.getParameters(); final LinkedHashMap paramap = new LinkedHashMap(); //必须使用LinkedHashMap确保顺序 for (int j = 0; j < params.length; j++) { //字段列表 @@ -891,6 +892,7 @@ public final class Rest { int maxLocals = 4; List asmParamNames = asmParamMap == null ? null : asmParamMap.get(method.getName() + ":" + Type.getMethodDescriptor(method)); + if (asmParamNames != null) while (asmParamNames.remove(" ")); //删掉空元素 List paramlist = new ArrayList<>(); //解析方法中的每个参数 for (int i = 0; i < params.length; i++) { @@ -1723,6 +1725,7 @@ public final class Rest { } cw.visitEnd(); + Class newClazz = new RestClassLoader(loader).loadClass(newDynName.replace('/', '.'), cw.toByteArray()); try { T obj = ((Class) newClazz).getDeclaredConstructor().newInstance(); diff --git a/src/org/redkale/util/Creator.java b/src/org/redkale/util/Creator.java index 9e0857276..0f48da229 100644 --- a/src/org/redkale/util/Creator.java +++ b/src/org/redkale/util/Creator.java @@ -140,6 +140,7 @@ public interface Creator { } final List fieldnames = new ArrayList<>(); new ClassReader(out.toByteArray()).accept(new SimpleClassVisitor(Opcodes.ASM6, fieldnames, constructorDesc), 0); + while (fieldnames.remove(" ")); //删掉空元素 if (fieldnames.isEmpty()) return null; if (paramcount == fieldnames.size()) { return getConstructorField(clazz, paramcount, fieldnames.toArray(new String[fieldnames.size()]));