abstract 类中@value取不到值
时间: 2024-09-19 16:13:39 浏览: 34
java中如何反射获取一个类
在Java中,`abstract` 类通常用于定义一组共同的行为规范,但不提供具体的实现。如果你在`abstract` 类中使用了`@Value`注解,它通常是用来标注带有默认值的属性,以便于在创建子类实例时自动初始化这些字段。
然而,`@Value`注解主要用于`final` 和 `static` 的类(如`Builder`模式下的`Pojo`),因为`abstract` 类本身无法被实例化,所以直接在`abstract` 类上使用`@Value`不会为你提供任何实际的默认值。当你尝试从`abstract` 类中通过`@Value`获取值时,实际上是在创建子类实例并调用它的构造函数时才能生效。
例如:
```java
public abstract class AbstractClassWithValue {
@Value // 这里不会立即赋值,需要在子类如ConcreteClass中使用
private String value;
}
public class ConcreteClass extends AbstractClassWithValue {
public ConcreteClass() {
// 这里才会调用 @Value 注解的初始化逻辑
}
}
```
如果你真的想在`AbstractClassWithValue`中设置默认值,可以考虑使用构造函数或者在子类中提供一个公共的静态工厂方法来完成。
阅读全文