diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/func/LambdaUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/func/LambdaUtilTest.java index e13ef6fa8..1c2d40f4e 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/func/LambdaUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/func/LambdaUtilTest.java @@ -1,11 +1,10 @@ package cn.hutool.core.lang.func; -import org.junit.Assert; -import org.junit.Test; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import org.junit.Assert; +import org.junit.Test; import java.lang.invoke.MethodHandleInfo; @@ -13,13 +12,13 @@ public class LambdaUtilTest { @Test public void getMethodNameTest() { - String methodName = LambdaUtil.getMethodName(MyTeacher::getAge); + final String methodName = LambdaUtil.getMethodName(MyTeacher::getAge); Assert.assertEquals("getAge", methodName); } @Test public void getFieldNameTest() { - String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge); + final String fieldName = LambdaUtil.getFieldName(MyTeacher::getAge); Assert.assertEquals("age", fieldName); } @@ -46,38 +45,38 @@ public class LambdaUtilTest { @Test public void getRealClassTest() { // 引用特定类型的任意对象的实例方法 - Class functionClass = LambdaUtil.getRealClass(MyTeacher::getAge); + final Class functionClass = LambdaUtil.getRealClass(MyTeacher::getAge); Assert.assertEquals(MyTeacher.class, functionClass); // 枚举测试,不会导致类型擦除 - Class enumFunctionClass = LambdaUtil.getRealClass(LambdaKindEnum::ordinal); + final Class enumFunctionClass = LambdaUtil.getRealClass(LambdaKindEnum::ordinal); Assert.assertEquals(LambdaKindEnum.class, enumFunctionClass); // 调用父类方法,能获取到正确的子类类型 - Class superFunctionClass = LambdaUtil.getRealClass(MyTeacher::getId); + final Class superFunctionClass = LambdaUtil.getRealClass(MyTeacher::getId); Assert.assertEquals(MyTeacher.class, superFunctionClass); - MyTeacher myTeacher = new MyTeacher(); + final MyTeacher myTeacher = new MyTeacher(); // 引用特定对象的实例方法 - Class supplierClass = LambdaUtil.getRealClass(myTeacher::getAge); + final Class supplierClass = LambdaUtil.getRealClass(myTeacher::getAge); Assert.assertEquals(MyTeacher.class, supplierClass); // 枚举测试,只能获取到枚举类型 - Class> enumSupplierClass = LambdaUtil.getRealClass(LambdaKindEnum.REF_NONE::ordinal); + final Class> enumSupplierClass = LambdaUtil.getRealClass(LambdaKindEnum.REF_NONE::ordinal); Assert.assertEquals(Enum.class, enumSupplierClass); // 调用父类方法,只能获取到父类类型 - Class> superSupplierClass = LambdaUtil.getRealClass(myTeacher::getId); + final Class> superSupplierClass = LambdaUtil.getRealClass(myTeacher::getId); Assert.assertEquals(Entity.class, superSupplierClass); // 引用静态带参方法,能够获取到正确的参数类型 - Class staticFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeAgeBy); + final Class staticFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeAgeBy); Assert.assertEquals(MyTeacher.class, staticFunctionClass); // 引用父类静态带参方法,只能获取到父类类型 - Class> staticSuperFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeId); + final Class> staticSuperFunctionClass = LambdaUtil.getRealClass(MyTeacher::takeId); Assert.assertEquals(Entity.class, staticSuperFunctionClass); // 引用静态无参方法,能够获取到正确的类型 - Class staticSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeAge); + final Class staticSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeAge); Assert.assertEquals(MyTeacher.class, staticSupplierClass); // 引用父类静态无参方法,能够获取到正确的参数类型 - Class staticSuperSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeIdBy); + final Class staticSuperSupplierClass = LambdaUtil.getRealClass(MyTeacher::takeIdBy); Assert.assertEquals(MyTeacher.class, staticSuperSupplierClass); } @@ -97,7 +96,7 @@ public class LambdaUtilTest { return new Entity().getId(); } - public static T takeIdBy(Entity entity) { + public static T takeIdBy(final Entity entity) { return entity.getId(); } @@ -112,7 +111,7 @@ public class LambdaUtilTest { return new MyTeacher().getAge(); } - public static String takeAgeBy(MyTeacher myTeacher) { + public static String takeAgeBy(final MyTeacher myTeacher) { return myTeacher.getAge(); } @@ -133,4 +132,17 @@ public class LambdaUtilTest { REF_invokeSpecial, REF_newInvokeSpecial, } + + @Test + public void lambdaClassNameTest() { + final String lambdaClassName1 = LambdaUtilTestHelper.getLambdaClassName(MyTeacher::getAge); + final String lambdaClassName2 = LambdaUtilTestHelper.getLambdaClassName(MyTeacher::getAge); + Assert.assertNotEquals(lambdaClassName1, lambdaClassName2); + } + + static class LambdaUtilTestHelper { + public static

String getLambdaClassName(final Func1 func) { + return func.getClass().getName(); + } + } }