01_lombok review

文章目录

  • Lombok
  • 父子工程
  • ide中的Maven基础配置
  • 前置知识储备

Lombok


怎么引入Lombok依赖

  • step1:引入Lombok依赖

eg:

    <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency></dependencies>
  • step2:安装Lombok插件
    在这里插入图片描述
  • step3:使用
    • @Data:注解在类上;提供类所有属性的 gettingsetting 方法,此外还提供了equalscanEqualhashCodetoString 方法
    • @AllArgsConstructor:全部参数的有参构造方法
    • @NoArgsConstructor:无参构造方法

eg:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;private String username;private String password;
}

父子工程

  • 父工程提供通用的依赖
    在这里插入图片描述
  • 父工程的特点:
    • packaging标签的值:pom,在编译之后只有一个pom文件,所以在这个文件里面不写代码、不写配置文件
    • 通用的配置:主要是依赖
      • 父工程中的dependenciesdependencyManagement之间的区别:
        • dependencies:给子工程特供依赖
        • dependencyManagement:给子工程提供依赖 的版本
          • 如果子工程中引入了这个依赖,可以不写版本号;如果子工程中写了版本号,以子工程为准
      • 子工程中引入mysql驱动依赖,可以不写版本,只要父工程dependencyManagement声明版本号即可

eg:

    <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency></dependencies></dependencyManagement>

ide中的Maven基础配置

  • Maven 根路径
  • setting.xml
    • mirror镜像:阿里云的镜像仓库
    • profile:jdk版本
  • 本地仓库
    在这里插入图片描述

常见问题

  • 打开其他人的项目(project)-> .idea文件夹所在的文件 -> 先要settings

前置知识储备

  • 抽象部分:为什么使用接口或抽象类,在什么情况下使用接口,什么情况下使用抽象类
    • 规范:方法名、形参(个数、类型)、返回值类型
    • 抽象类做类似的事情 方法定义为抽象方法,抽象类的子类必须要实现抽象方法
    • 个性化和通用性 兼得 就可以使用抽象类
  • 静态内部类的类加载过程
    • 没有使用到静态内部类,它没有加载
  • 匿名内部类的定义和使用
    • new 接口或抽象类
    • 完成了类的定义,并且获得了实例
    • 如果要使用外部的局部变量的时候,使用匿名内部类可以直接获取
  • 反射:反射过程中的常用名词Class、Field、Method、Parameter、Constructor。
    • 反射过程中的常用方法:
      • 获得class、field、method、parameter、constructor → getDeclaredXXX
      • 通过反射获得实例 class和constructor
      • 通过反射调用方法 method.invoke(instance,args)

eg:

public class Reflect {public static void main(String[] args)throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException,InvocationTargetException, InstantiationException, IllegalAccessException {// 没有使用反射execute1();// 使用反射execute2();// 使用反射的方式重写execute1()execute3();// 工具类加载配置文件execute4();}private static void execute4() {ExecuteUtil.execute("execute.properties",new Object[]{"zs"});}private static void execute3()throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,InstantiationException, IllegalAccessException, NoSuchFieldException {Class<?> aClass = Class.forName("com.coo1heisenberg.Demo1.UserService");Constructor<?> constructor = aClass.getDeclaredConstructor();// 1. 调用构造器获得一个实例Object instance = constructor.newInstance();// 或者Object instance1 = aClass.newInstance();// 2. 给username这个成员变量field赋值Field field = aClass.getDeclaredField("username");// 避免成员变量权限不足field.setAccessible(true);field.set(instance, "zs");// 3. 调用instance对象的eatTogether方法Method method = aClass.getDeclaredMethod("eatTogether", String.class);String name = "ls";Object[] args = new Object[]{name};method.invoke(instance, args);}private static void execute2()throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {// 1. Class对象获取方式// 常用Class clazz1 = UserService.class;UserService userService = new UserService();Class clazz2 = userService.getClass();// 常用Class clazz3 = Class.forName("com.coo1heisenberg.Demo1.UserService");Class clazz4 = clazz2.getClassLoader().loadClass("com.coo1heisenberg.Demo1.UserService");// 2. 获得里面的FieldField field = clazz3.getDeclaredField("username");Field[] declaredFields = clazz3.getDeclaredFields();// 3. MethodMethod[] declaredMethods = clazz3.getDeclaredMethods();for (Method declaredMethod : declaredMethods) {boolean eatTogether = declaredMethod.getName().equals("eatTogether");System.out.println(eatTogether);}Method ww = clazz3.getDeclaredMethod("eatTogether", String.class);System.out.println(ww);// 4. constructorConstructor[] declaredConstructors = clazz3.getDeclaredConstructors();}private static void execute1() {UserService userService = new UserService();userService.setUsername("zs");userService.eatTogether("ls");}
}public class ExecuteUtil {// args = new Object[]{zs}public static void execute(String fileName, Object args) {// getClassLoader是为了加载class下的配置文件InputStream inputStream = ExecuteUtil.class.getClassLoader().getResourceAsStream(fileName);Properties properties = new Properties();try {properties.load(inputStream);String className = properties.getProperty("className");String methodName = properties.getProperty("methodName");String fieldName = properties.getProperty("fieldName");String fieldValue = properties.getProperty("fieldValue");Class<?> aClass = Class.forName(className);
//            aClass.getDeclaredMethod(methodName,String.class);Method method = null;Method[] declaredMethods = aClass.getDeclaredMethods();for (Method declaredMethod : declaredMethods) {if(methodName.equals(declaredMethod.getName())){method = declaredMethod;}}Object instance = aClass.newInstance();Field declaredField = aClass.getDeclaredField(fieldName);declaredField.setAccessible(true);declaredField.set(instance,fieldValue);method.invoke(instance, args);} catch (IOException | ClassNotFoundException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}
}@Data
public class UserService {String username;public void eatTogether(String name){String result = username + name + "go out to eat";System.out.println(result);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库管理-第159期 Oracle Vector DB AI-10(20240311)

数据库管理159期 2024-03-11 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#xff09;1 其他distance函数2 实例演示使用其他函数寻找最近向量点函数变体简写语法 总结 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#x…

网络安全AI智能体公司「云起无垠」获数千万元天使+轮融资,致力于大模型与网络安全深度融合的技术研究

「云起无垠」致力于打造最懂安全的AI智能体&#xff0c;通过持续运营的工具、知识以及记忆引擎&#xff0c;不断提升智能体对用户安全场景的理解&#xff0c;以达到易于使用、自我学习、自主行动的特性&#xff0c;助力企业自动化执行各类安全任务&#xff0c;让软件更安全&…

解决:黑马webpack视频中出现的问题总结

问题 1 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 解决 Webpack 中 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 问题 黑马AJAX-Node.js-Webpack教学视频&#xff08;BV1MN411y7pw 其中P98&#xff09;中webpack部分&#xff0c…

代理IP如何应对自动化测试和爬虫检测

目录 一、代理IP在自动化测试和爬虫中的作用 二、代理IP的优缺点分析 1.优点 2.缺点 三、应对自动化测试和爬虫检测的策略 1.选择合适的代理IP 2.设置合理的请求频率和间隔 3.模拟人类行为模式 4.结合其他技术手段 四、案例与代码示例 五、总结 在自动化测试和爬虫开…

传递函数硬件化

已知一个系统的传递函数&#xff0c;如何进行硬件化呢&#xff1f; 只需要将传递函数离散化&#xff0c;得到差分方程&#xff0c;就可以根据差分方程进行硬件设计。 通过例子说明&#xff1a; 得到差分方程后&#xff0c;其中y(k)/y(k-1)/y(k-2)/u(k-1)/u(k-2)等代表不同周期…

软考如何选择?信息系统项目管理师值得选吗?

软考有五大专业方向和三个等级&#xff0c;一共有27个资格认证&#xff0c;如果没有进行深入了解的情况下从这27个中选择一个可能会为难。一般情况下&#xff0c;我们进行选择的时候都会结合自己所学的专业方向、所在的工作岗位发展方向去选择&#xff0c;但是我给大家的建议是…

华为OD机试 - 垃圾信息拦截(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&a…

Node.js 安装和配置

一、Node.js 下载和安装 1.1 下载 Node.js 打开 Node.js — Download (nodejs.org)&#xff0c; 选择合适的版本。 1.2 安装 Node.js 双击 node-v20.11.1-x64.msi&#xff0c;安装 Node.js &#xff08;自定义安装目录&#xff0c;我的修改为 D:\Program Files\nodejs\&…

Google发布创新AI工具Path Foundation和Derm Foundation,突破医学影像解读瓶颈,开启病理学与皮肤科研究新纪元

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

解压常见_gzip:stdin:not in gzio format:怀疑下文件是否损坏

此次的主角文件是&#xff1a;pin-2.14-71313-gcc.4.4.7-linux.tar.gz 结论&#xff1a;文件后缀没问题&#xff0c;就先怀疑下是不是文件损坏了 ls指令看不出任何端倪 文件名、后缀都正常 解压出现报错 瞅瞅文件大小 du -h <文件名> 呦呵 4kb&#xff0c;和应该的大…

基于SpringBoot的信息技术知识赛系统设计与实现

该系统使用的到的开发工具为Eclipse&#xff0c;使用的数据库为Mysql&#xff0c;使用的框架为SpringBoot框架。 系统主要实现了如下功能&#xff1a; 用户信息管理 如图5.1显示的就是用户信息管理页面&#xff0c;此页面提供给管理员的功能有&#xff1a;用户信息的查询管理…

波司登高德康:以有“韧性”的创新应变市场新浪潮

伴随着消费升级&#xff0c;羽绒服市场需求日益旺盛。愈发多元化的需求对于企业发展也有着更高的要求。如何更好推动行业多元化发展&#xff0c;可以从波司登的品牌升级、产品创新、模式创新、数字技术创新、绿色发展创新等方面窥得一二。 高德康总裁接受新华网主持人采访 对此…

Codeforces Round 933 (Div. 3)C:Rudolf and the Ugly String

题目链接&#xff1a;Dashboard - Codeforces Round 933 (Div. 3) - Codeforces 解题思路&#xff1a; 解题思路&#xff1a; 题目大概意思是字符串中最少去掉几个单词可以使字符串变漂亮&#xff0c;其实只要找“map"和”pie“这两个单词数量&#xff0c;注意判断&quo…

【PyTorch][chapter 22][李宏毅深度学习]【无监督学习][ WGAN]【理论一】

简介&#xff1a; 2014年Ian Goodfellow提出以来&#xff0c;GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起&#xff0c;很多论文都在尝试解决&#xff0c;但是效果不尽人意&#xff0c;比如最有名的一个改进DCGAN依靠的是对…

Kafka的基本介绍以及扩展

文章目录 基本操作新增Topic查询Topic修改Topic删除Topic 生产者和消费者创建生产者创建消费者 Broker扩展Producer扩展Topic、Partition、Message扩展存储策略容错机制 基本操作 新增Topic 指定两个分区&#xff0c;两个副本&#xff0c;replication不能大于集群中的broker数…

【MAC】MacOS M2 芯片的Mysql 数据库安装与使用

1.下载 https://downloads.mysql.com/archives/community/ 选择ARM的 2.安装 在安装到最后一步&#xff1a;configuration 一定要选择Use Legacy Password Encryption。 一定要记得输入密码&#xff0c;这个密码也是登陆mysql的密码&#xff0c;非常重要。备注&#xff1a;…

Huggingface中Transformer模型使用

NLP自从Transformer模型出现后&#xff0c;处理方式有大统一的趋势&#xff0c;首先回答几个基础问题&#xff1a; 1、自然语言处理究竟要做一件什么事呢&#xff1f;自然语言处理最终解决的是分类问题&#xff0c;但是它不仅仅输出一个分类的预测结果&#xff0c;关键的在于构…

私立医院的革命者:大数据解决方案全面解析

第一部分&#xff1a;背景 在信息化飞速发展的今天&#xff0c;医疗行业正经历着一场深刻的数字化转型。特别是对于私立医院来说&#xff0c;要在这个变革的浪潮中立于不败之地&#xff0c;就必须拥抱新技术&#xff0c;优化服务流程&#xff0c;提高医疗质量。大数据技术&…

Mac M1:通过docker安装RocketMQ、RocketMQ-Dashboard

0. 引言 最近本地启动以前docker安装的rocketmq发现报错了&#xff0c;因为是从老mac迁移过来的&#xff0c;发现支持的芯片还是amd的&#xff0c;于是重新在docker下安装rocketmq&#xff0c;并记录下步骤&#xff0c;方便大家后续参考。 1. 步骤 1、先下载项目源码 git c…

基于eleiment-plus的表格select控件

控件不是我写的&#xff0c;来源于scui,但在使用中遇到了一些问题&#xff0c;希望能把过程记录下来&#xff0c;同时把这个问题修复掉。 在使用的时候对控件进行二级封装&#xff0c;比如我的一个商品组件&#xff0c;再很多地方可以用到&#xff0c;于是 <template>&l…