diff options
Diffstat (limited to 'src/main/javassist/reflect/ClassMetaobject.java')
-rw-r--r-- | src/main/javassist/reflect/ClassMetaobject.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main/javassist/reflect/ClassMetaobject.java b/src/main/javassist/reflect/ClassMetaobject.java index bfbc3f48..61328452 100644 --- a/src/main/javassist/reflect/ClassMetaobject.java +++ b/src/main/javassist/reflect/ClassMetaobject.java @@ -251,7 +251,8 @@ public class ClassMetaobject implements Serializable { Class baseclass = getJavaClass(); Method[] allmethods = baseclass.getDeclaredMethods(); int n = allmethods.length; - methods = new Method[n]; + int[] index = new int[n]; + int max = 0; for (int i = 0; i < n; ++i) { Method m = allmethods[i]; String mname = m.getName(); @@ -265,10 +266,17 @@ public class ClassMetaobject implements Serializable { break; } - methods[k] = m; + index[i] = ++k; + if (k > max) + max = k; } } + methods = new Method[max]; + for (int i = 0; i < n; ++i) + if (index[i] > 0) + methods[index[i] - 1] = allmethods[i]; + return methods; } |