perf[protocol]: 优化ArrayUtils里的listToArray方法

This commit is contained in:
jaysunxiao
2021-06-25 14:36:15 +08:00
parent 5398fedd9d
commit 5ccfd47bda
3 changed files with 9 additions and 10 deletions
@@ -170,10 +170,7 @@ public abstract class ArrayUtils {
var length = list.size();
var objectArray = Array.newInstance(clazz, length);
for (var i = 0; i < length; i++) {
Array.set(objectArray, i, list.get(i));
}
System.arraycopy(list.toArray(), 0, objectArray, 0, length);
return (T[]) objectArray;
}
@@ -14,6 +14,7 @@ package com.zfoo.protocol.registration;
import com.zfoo.protocol.IPacket;
import com.zfoo.protocol.ProtocolManager;
import com.zfoo.protocol.collection.ArrayUtils;
import com.zfoo.protocol.collection.CollectionUtils;
import com.zfoo.protocol.exception.RunException;
import com.zfoo.protocol.exception.UnknownException;
@@ -366,8 +367,8 @@ public class ProtocolAnalysis {
var protocol = new ProtocolRegistration();
protocol.setId(protocolId);
protocol.setConstructor(constructor);
protocol.setFields(fields.toArray(new Field[fields.size()]));
protocol.setFieldRegistrations(registrationList.toArray(new IFieldRegistration[registrationList.size()]));
protocol.setFields(ArrayUtils.listToArray(fields, Field.class));
protocol.setFieldRegistrations(ArrayUtils.listToArray(registrationList, IFieldRegistration.class));
protocol.setModule(module.getId());
return protocol;
}
@@ -12,6 +12,7 @@
package com.zfoo.protocol.util;
import com.zfoo.protocol.collection.ArrayUtils;
import com.zfoo.protocol.exception.RunException;
import java.lang.annotation.Annotation;
@@ -106,7 +107,7 @@ public abstract class ReflectionUtils {
list.add(field);
}
}
return list.toArray(new Field[list.size()]);
return ArrayUtils.listToArray(list, Field.class);
}
public static Field getFieldByNameInPOJOClass(Class<?> clazz, String fieldName) {
@@ -132,7 +133,7 @@ public abstract class ReflectionUtils {
list.add(method);
}
}
return list.toArray(new Method[list.size()]);
return ArrayUtils.listToArray(list, Method.class);
}
public static Method[] getMethodsByNameInPOJOClass(Class<?> clazz, String methodName) {
@@ -143,7 +144,7 @@ public abstract class ReflectionUtils {
list.add(method);
}
}
return list.toArray(new Method[list.size()]);
return ArrayUtils.listToArray(list, Method.class);
}
/**
@@ -162,7 +163,7 @@ public abstract class ReflectionUtils {
Collections.addAll(list, methods);
superClazz = superClazz.getSuperclass();
}
return list.toArray(new Method[list.size()]);
return ArrayUtils.listToArray(list, Method.class);
}
//*************************************操作Class*********************************