package xyz.zhouxy.plusone.commons.annotation; import java.lang.annotation.Target; import com.google.common.annotations.Beta; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * 标记不可变对象。根据约定,该对象的字段只能是不可变对象或基础数据类型,且都是只读的。如: *
@ImmutableObject * class Foo { * private final @Getter int intVal; * private final @Getter String stringVal; * private final @Getter LocalDate dateVal; * private final @Getter BigDecimal decimalVal; * } **
* 如 guava 的 ImmutableList、ImmutableMap 等不可变集合,不属于此,因为其不要求包含的元素本身是不可变的。 *
* * @author ZhouXY * @since 0.1.0 */ @Beta @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface ImmutableObject { }