lombok建造者模式支持父类
发表于|更新于
|浏览量:
精力充沛的青春,是不怎么容易灭亡的。——卡罗萨
使用@SuperBuilder注解代替原本的@Builder就可以了
如果对建造者模式不太了解的,可以看我以往写的博客:
https://VampireAchao.github.io/2020/11/08/%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F/
这里做个对比,加之前:



加之后:


可以看到子类开始的建造者模式成功访问到父类属性,不过最终获取到的还是父类
如果想要最终获取到的还是子类,可以在父类也使用@SuperBuilder
不过父类的父类也要有@SuperBuilder

相关推荐
2020-11-11
springbootのmybatis-plus日志打印
只需要在yml中配置 123456789101112131415161718spring: cloud: alicloud: access-key: secret-key: oss: endpoint: bucket: redis: host: localhost port: 6379 datasource: url: jdbc:sqlite:data.db driver-class-name: org.sqlite.JDBC# mybatis的配置mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 配置完成后重启即可
2021-09-26
自定义注解和AOP
生命不可能有两次,但许多人连一次也不善于度过——吕凯特 我们写一个注解用AOP去实现接口的访问记录,这个也可以用于日志记录等地方 12345678910111213141516import java.lang.annotation.*;/** * 记录 * * @author <achao1441470436@gmail.com> * @since 2021/7/29 11:28 */@Inherited@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface WithMe { String value();} 然后在AOP中这样写 123456789101112131415161718192021222324252627282930313233import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj....
2020-12-30
Collections.shuffle()
莫等闲,白了少年头,空悲切。——岳飞 转 Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list) 使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。 2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。 通俗一点的说,就像洗牌一样,随机打乱原来的顺序。 注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径: 1)用List list=ArrayList(Arrays.asList(ia)),用shuffle()打乱不会改变底层数组的顺序。 2)用List list=Arrays.aslist(ia),然后用shuffle()打乱会改变底层数组的顺序。代码例子如下: 12345678910111213141516171819202...
2023-01-11
byte-buddy实现mybatis-plus动态mapper
掌握了教育,就掌握了国家——法国谚语 构造动态mapper部分代码如下: 123456789101112131415public static void buildMapper(Configuration configuration, Class<?> entityClass) { if (!(configuration instanceof MybatisConfiguration)) { throw new IllegalArgumentException("configuration must be MybatisConfiguration"); } ENTITY_MAPPER_CLASS_CACHE.computeIfAbsent(entityClass, k -> { Class<?> dynamicMapper = new ByteBuddy() .makeInterface(TypeDescript...
2022-05-10
连接流时如果是并行流
日出之美便在于它脱胎于最深的黑暗。——辛夷坞 代码: 1234System.out.println(Stream.concat(Stream.of(1), Stream.of(1)).isParallel()); // falseSystem.out.println(Stream.concat(Stream.of(1).parallel(), Stream.of(1)).isParallel()); // trueSystem.out.println(Stream.concat(Stream.of(1), Stream.of(1).parallel()).isParallel()); // trueSystem.out.println(Stream.concat(Stream.of(1).parallel(), Stream.of(1).parallel()).isParallel()); // true 结论:连接的两个流,只要其中有一个是并行流,最终的流则为并行流 顺...
2023-02-15
bean-searcher内嵌参数
凡事有私心的人,虚荣心强的人,一切以我为中心的人才最爱听拍马屁的奉承话、甜言蜜语,其中一定包含着辛辣——席勒 文档链接 这里的内嵌参数中的一种,拼接参数可以让我们传入自定义的sql,更加的灵活 例如嵌入到@SearchBean.tables里 123456789101112@SearchBean( tables = ":table:" // 参数 table 由检索时动态指定,这在分表检索时非常有用) public class Order { @DbField("id") private long id; @DbField("order_no") private String orderNo;} 又或者是groupBy里 12345678910@SearchBean( tables = "student", groupBy = ":groupBy:" // 动态指定分组条件)...
