diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ReflectUtil.java b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ReflectUtil.java index d278ec55..1e18e84f 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ReflectUtil.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/ReflectUtil.java @@ -264,4 +264,22 @@ public class ReflectUtil { throw new IllegalException(e); } } + + /** + * find field by fieldName and fieldType + * @param obj target obj + * @param filedName filedName + * @param fieldType fieldType + * @return target field or null + */ + public static Field findField(Object obj, String filedName, String fieldType) { + Field[] fields = ReflectUtil.getFields(obj.getClass()); + for (Field field : fields) { + if (field.getName().contains(filedName) && + (field.getType().getName().contains(fieldType))) { + return field; + } + } + return null; + } } diff --git a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java index 32ec0235..5af90f9f 100644 --- a/hippo4j-core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java +++ b/hippo4j-core/src/main/java/cn/hippo4j/core/executor/support/adpter/ZipkinExecutorAdapter.java @@ -40,12 +40,11 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter { } public boolean matchSuper(Object executor) { - if (executor == null || executor.getClass().equals(Object.class)) { - return false; - } else if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) { + if (Objects.equals(MATCH_CLASS_NAME, executor.getClass().getName())) { return true; - } else + } else { return Objects.equals(MATCH_CLASS_NAME, executor.getClass().getSuperclass().getName()); + } } @Override @@ -62,14 +61,14 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter { @Override public void replace(Object executor, Executor dynamicThreadPoolExecutor) { - Field field = findTarField(executor, FIELD_NAME, TYPE_NAME); + Field field = ReflectUtil.findField(executor, FIELD_NAME, TYPE_NAME); ReflectUtil.setFieldValue(executor, field, dynamicThreadPoolExecutor); } private Object doUnwrap(Object executor) { Object unwrap = ReflectUtil.getFieldValue(executor, FIELD_NAME); if (unwrap == null) { - Field field = findTarField(executor, FIELD_NAME, TYPE_NAME); + Field field = ReflectUtil.findField(executor, FIELD_NAME, TYPE_NAME); if (field != null) { return ReflectUtil.getFieldValue(executor, field); } @@ -77,14 +76,5 @@ public class ZipkinExecutorAdapter implements DynamicThreadPoolAdapter { return null; } - private Field findTarField(Object obj, String filedName, String fieldType) { - Field[] fields = ReflectUtil.getFields(obj.getClass()); - for (Field field : fields) { - if (field.getName().contains(filedName) && - (field.getType().getName().contains(fieldType))) { - return field; - } - } - return null; - } + }