lombok 只读属性
时间: 2023-08-30 19:07:42 浏览: 68
lombok 是一个 Java 库,它可以通过注解自动为 Java 类生成样板代码,减少了开发者的工作量。如果你想要在 Java 类中创建只读属性,可以使用 lombok 的 `@Getter` 注解。
在需要创建只读属性的类上,使用 `@Getter` 注解标记类或字段。Lombok 将会为被注解的字段生成对应的 getter 方法,这样其他类就可以访问这些字段的值,但无法修改。
下面是一个使用 lombok 创建只读属性的示例:
```java
import lombok.Getter;
@Getter
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
```
在上述示例中,`name` 和 `age` 字段被声明为 `final`,并且使用 `@Getter` 注解。Lombok 会自动生成 `getName()` 和 `getAge()` 方法,这样其他类就可以获取 `name` 和 `age` 的值,但无法修改它们。
希望这个回答能解决你的问题!如果有任何疑问,请随时提问。
相关问题
lombok属性默认值
在 Lombok 中,可以使用 `@Getter` 和 `@Setter` 注解为属性生成 getter 和 setter 方法,但是这两个注解并不会为属性设置默认值。如果需要为属性设置默认值,可以使用 `@Builder` 注解来生成带有默认值的构造函数。
例如:
```java
@Getter
@Setter
@Builder
public class Person {
private String name;
private int age;
@Builder.Default
private String gender = "unknown";
}
```
在上面的例子中,`@Builder.Default` 注解用于为 `gender` 属性设置默认值为 "unknown"。当使用 Lombok 自动生成构造函数时,会自动为 `gender` 属性赋上默认值。
另外,也可以使用 `@Value` 注解来生成一个只读的不可变类,并在该注解中使用 `final` 和 `default` 关键字来为属性设置默认值。例如:
```java
@Value
public class Circle {
double radius;
@Builder.Default
String color = "red";
}
```
在上面的例子中,`@Builder.Default` 注解用于为 `color` 属性设置默认值为 "red"。在使用 Lombok 自动生成构造函数时,会自动为 `color` 属性赋上默认值。由于使用了 `@Value` 注解,因此 `Circle` 类是一个只读的不可变类,属性的值只能在构造函数中被初始化,无法再被修改。
lombok @Builder 子用父属性
可以使用Lombok的@SuperBuilder注解来实现子类使用父类属性的功能。@SuperBuilder注解会自动生成一个带有父类属性的builder方法,子类可以直接调用该方法来初始化父类属性。
示例代码如下:
```java
import lombok.Builder;
import lombok.Getter;
import lombok.experimental.SuperBuilder;
@Getter
@SuperBuilder
public class Parent {
private String name;
}
@Getter
@Builder
public class Child extends Parent {
private int age;
}
// 使用示例
Child child = Child.builder()
.name("Tom")
.age(18)
.build();
```
在上面的示例中,Child类继承了Parent类,并使用了@SuperBuilder注解。在Child类中,我们只需要定义子类特有的属性,而父类的属性可以直接使用父类的builder方法来初始化。