mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix code
This commit is contained in:
@@ -198,18 +198,20 @@ public class MethodUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
Method res = null;
|
||||
final Method[] methods = getMethods(clazz);
|
||||
if (ArrayUtil.isNotEmpty(methods)) {
|
||||
for (final Method method : methods) {
|
||||
if (StrUtil.equals(methodName, method.getName(), ignoreCase)
|
||||
&& ClassUtil.isAllAssignableFrom(method.getParameterTypes(), paramTypes)
|
||||
//排除桥接方法,pr#1965@Github
|
||||
&& false == method.isBridge()) {
|
||||
return method;
|
||||
//排除协变桥接方法,pr#1965@Github
|
||||
&& (res == null || res.getReturnType().isAssignableFrom(method.getReturnType()))) {
|
||||
res = method;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -265,17 +267,18 @@ public class MethodUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
Method res = null;
|
||||
final Method[] methods = getMethods(clazz);
|
||||
if (ArrayUtil.isNotEmpty(methods)) {
|
||||
for (final Method method : methods) {
|
||||
if (StrUtil.equals(methodName, method.getName(), ignoreCase)
|
||||
// 排除桥接方法
|
||||
&& false == method.isBridge()) {
|
||||
return method;
|
||||
//排除协变桥接方法,pr#1965@Github
|
||||
&& (res == null || res.getReturnType().isAssignableFrom(method.getReturnType()))) {
|
||||
res = method;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -115,6 +115,7 @@ public class MethodUtilTest {
|
||||
Console.log(timer.getLastTaskTimeMillis());
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public static Method getMethodWithReturnTypeCheck(final Class<?> clazz, final boolean ignoreCase, final String methodName, final Class<?>... paramTypes) throws SecurityException {
|
||||
if (null == clazz || StrUtil.isBlank(methodName)) {
|
||||
return null;
|
||||
@@ -193,6 +194,26 @@ public class MethodUtilTest {
|
||||
Assert.assertNotNull(publicSubMethod);
|
||||
final Method privateSubMethod = MethodUtil.getMethod(ReflectUtilTest.TestSubClass.class, "privateSubMethod");
|
||||
Assert.assertNotNull(privateSubMethod);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issue2625Test(){
|
||||
// 内部类继承的情况下父类方法会被定义为桥接方法,因此按照pr#1965@Github判断返回值的继承关系来代替判断桥接。
|
||||
final Method getThis = MethodUtil.getMethod(A.C.class, "getThis");
|
||||
Assert.assertTrue(getThis.isBridge());
|
||||
}
|
||||
|
||||
@SuppressWarnings("InnerClassMayBeStatic")
|
||||
public class A{
|
||||
|
||||
public class C extends B{
|
||||
|
||||
}
|
||||
|
||||
protected class B{
|
||||
public B getThis(){
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -695,4 +695,10 @@ public class StrUtilTest {
|
||||
Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2000"));
|
||||
Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2001"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issue2628Test(){
|
||||
final String s = StrUtil.indexedFormat("a{0,number,#}", 1234567);
|
||||
Assert.assertEquals("a1234567", s);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user