IDEA基本设置
设置编码格式
- Configure - Settings - Editor - File Encodings
- 将三个编码全部设置为UTF-8
启用Ctrl+滑轮缩放代码
- Configure - Settings - Editor - General
- 将右边第二个勾选中。
启用鼠标悬浮智能提示
- Configure - Settings - Editor - General
- 勾选Other下面的第三个选项“Show quick documentation on mouse move”
IDEA导包(以junit为例)
- 准备junit的jar包:
- hamcrest-core-1.3.jar
- junit-4.12.jar
- 在项目中新建文件夹:lib
- 将jar包复制进去
- 打开项目结构设置:File - Project Structure
- 依次选择“Modules - 你的项目模块 - Dependencies”,打开项目依赖设置
- 点击“+”、“JARs or directories”
- 选择当前项目中的lib文件夹,确定,即可完成导入。
Lombok的使用
- 将 lombok-1.18.4.jar 包导入项目中
- IDEA安装插件:lombok-plugins-{版本}.zip
- 启用注解:
- File - Settings - Build,Execution,Deployment
- Compiler - Annontation Proccessor
- 选择Default,勾选“enable annotations proccessor”
反射相关类
- Class:类的模板,可以根据Class获取目标类的所有信息。
- Field:字段/属性。
- Constructor:构造函数。
- Method:类中的方法。
获取Class的方式
- 动态加载
Class clz = Class.forName("com.demo.bean.User")
- 通过对象获取
User zs = new User();
Class clz = zs.getClass();
- 通过类获取
Class clz = User.class;
Class相关方法
方法名 |
描述 |
结果示例 |
getName() |
获取类的全名称。 |
com.demo.bean.User |
getSimpleName() |
获取类名。 |
User |
getFields() |
获取所有public的属性。 |
public int com.bean.User.id |
getDeclaredFields() |
获取所有属性/字段。 |
所有public和private的属性和字段。 |
getMethods() |
获取所有public的方法。 |
public void com.demo.bean.User.setId(int) |
getDeclaredMethods() |
获取所有方法。 |
public void com.demo.bean.User.setId(int) |
getDeclaredMethod() |
获取指定名称的方法。 |
|
getConstructors() |
获取public的无参构造函数。 |
public User() |
getDeclaredConstructors() |
获取所有无参构造函数。 |
|
getDeclaredConstructor() |
只获取无参构造,因为没有指定参数类型。 |
|
getDeclaredConstructor(int.class) |
只获取包含int的构造,因为指定了一个int的参数类型。 |
|
Field字段
方法名 |
描述 |
结果示例 |
getName() |
获取字段的名称。 |
name |
getType() |
获取字段的类型。 |
int |
Method方法
方法名 |
描述 |
结果示例 |
getName() |
获取方法名。 |
getName() |
getReturnType() |
获取方法的返回值类型。 |
int |
invoke() |
执行方法,获取返回结果。 |
(Object) |
设置注解的使用场景
使用@Target注解,如下:
@Target(ElementType.TYPE)
public @interface Table { }
设置注解的生命周期(运行时环境)
- SOURCE:源码级
- CLASS:字节码级
- RUNTIME:运行时级
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table { }
为注解设置参数
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {
String name() default "";
}
获取指定类型的注解
Class clz = User.class;
Table table = (Table)clz.getDeclaredAnnotation(Table.class);
if(table!=null && table.name().length()!=0)){
String name = table.name()
}