您的位置:首页 > 编程语言 > Java开发

Lombok 注解说明

2016-01-22 00:00 615 查看
摘要: 今天了解到Lombok这个框架,看了一下官方文档https://projectlombok.org/features/index.html
并且敲了一些代码测试,将各个注解的基本使用方法写了下来。大家可以参考参考
简单的讲解了常用的Lombok 各个注解的使用方法和一些属性说明。

val

自动识别参数类型,会定义一个局部final的变量

例如 val a = new ArrayList<String>(); 相当于 final ArrayList<String> a = new ArrayList<String>();

@NonNull

非空约束,

可以注解在方法的参数上,类的属性上

public void hello(@NonNull String hello){

System.out.println(hello);

}

如果hello为空的话,不会执行System.out.println(hello):方法,会抛出一个空指针异常

-----

注解在方法的属性名上,如果有,@RequiredArgsConstructor注解 构造该对象时,必须传入参数

public class App

{

@NonNull

private String hello;

}

@Cleanup

对象引用结束前调用某个方法,默认是close()方法,也可以自己制定一个无参的方法,多用于关闭流等操作,避免繁琐的try{}catch{}操作

@Getter/Setter

可以注解在类上或者字段上。

注解在类上为所有的字段自动生成过 Getter/Setter 方法

可设置参数value=AccessLevel.xxxx 生成方法的访问权限

@ToString

includeFieldNames 生成的toString是否包含字段名称,默认true

exclude 排除那些字段

of 包括那些字段(默认全部),如果指定了对象,那么 exclude 里面对应的字段也会被执行

callSuper 是否调用父类的 toString()方法

doNotUseGetters 获取字段值的时候,如果有可用的getters 是否不使用,默认false使用

@EqualsAndHashCode

exclude

of

callSuper

doNotUseGetters 同上

@NoArgsConstructor (自动生成无参构造器)

@RequiredArgsConstructor (有参构造器,如果 字段有 @NonNull 注解,那么构造器必须包含该字段,不可以和@NoArgsConstructor同在)

@AllArgsConstructor 全参构造器,会生成一个带有全部参数的构造器

staticName 会将构造器私有化,并创建一个静态的方法

onConstructor

access 构造器的访问权限,默认是 public

@Data

相当于使用了
@Getter
,
@Setter
,
@ToString
,
@EqualsAndHashCode
and
@RequiredArgsConstructor 这些注解


staticConstructorc 类似于staticName参数的作用

@Value

类似Data,但是会将所有的字段设置成 private final 的,并且不会生成setters

@
Builder


会创建一个内部类,并创建静态的 builder方法,可以通过该方法链式的构造对象,描述起来比较复杂


这一段最好能自己看看官方文档:
https://projectlombok.org/features/Builder.html

@SneakyThrows

如果有一些自己不想处理的异常,但是抛出后,调用该方法的时候又有很多 try{}catch{}很麻烦,就可以用这个注解。

用的比较多的是实现Runnable 的run()方法里面。众所周知run()方法是没有抛出异常的,写在里面的代码动不动就要try{}catch{}着实麻烦,用这个注解就可以搞定了

@Synchronized

给方法加锁

@Wither

该注解放在属性前面,会生成属性的withXXX方法,可以使用withAge(xxx).withXX() 链式操作

日志类注解:自动在你的类里面生成静态的 类实例

@CommonsLog


Creates
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);


@Log


Creates
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());


@Log4j


Creates
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);


@Log4j2


Creates
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);


@Slf4j


Creates
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);


@XSlf4j


onMethod= / onConstructor= / onParam= 可以在对应的 地方添加 其他注解

如果我们用了@Getter注解, 生成的getXX()方法是我们是看不到的,如果我们要在生成的getXXX()方法上面加注解,可以用 @Getter(onMethod=@__({@Ann1,@Ann2,@Ann3(value="hello")})) 这样的方式

示例代码如下

@AllArgsConstructor(onConstructor=@__(@Inject))
public class OnXExample {
@Getter(onMethod=@__({@Id, @Column(name="unique-id")}))
@Setter(onParam=@__(@Max(10000)))
private long unid;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息