提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
可以使用com.baomidou.mybatisplus.core.toolkit包下面的LambdaUtils类去解析lambda表达式,能够获取到对应的类信息以及字段信息
一、LambdaUtils是什么?
LambdaUtils是Lambda表达式的工具类,可以动态获取Lambda表达式的相关类信息等,可以使代码更优雅
二、使用步骤
package com.charles.jee.fk.demo.domain;
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
import com.charles.jee.fk.boot.config.core.exceptions.JeeFkRuntimeException;
import com.charles.jee.fk.domain.AppLication;
import com.charles.jee.fk.modules.oms.entity.Project;
import org.apache.ibatis.reflection.property.PropertyNamer;
import org.junit.After;
import org.junit.Before;
import org.springframework.boot.test.context.SpringBootTest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Optional;
//@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppLication.class)
public class ApplicationTest {
@Before
public void init() {
System.out.println("开始测试-----------------");
}
@After
public void after() {
System.out.println("测试结束-----------------");
}
public static void main(String[] args) throws ParseException {
SerializedLambda resolve = LambdaUtils.resolve(Project::getId);
Class<?> instantiatedType = resolve.getInstantiatedType();
String implMethodName = resolve.getImplMethodName();
System.out.println(instantiatedType);
System.out.println(implMethodName);
}
}
首先使用LambdaUtils中的resolve方法解析传入的Lambda表达式,返回一个SerializedLambda对象
SerializedLambda.getInstantiatedType()方法可以获得到对应的类信息。SerializedLambda.getImplMethodName()可以获得到对应方法名。可以配合PropertyNamer类获取到对应字段名,然后通过反射就可以获取到当前字段的所有信息,比如类型等。