我犯了一个愚蠢的错误?我是 yaml 新手。不知道为什么,但我的系统看不到我的名为“name”的变量。
错误:
cannot create property=name for JavaBean=x.ModuleDescription@7ce6a65d
Run Code Online (Sandbox Code Playgroud)
我的课:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ModuleDescription {
private String name;
private String main;
private String version = "unknown";
private String author = "unknown";
@Setter
private File file = null;
}
Run Code Online (Sandbox Code Playgroud)
我可以看到该字段,但我的系统看不到。希望有人有想法。谢谢!
好吧,您声明该字段name禁止private其他任何人访问该字段。默认情况下,SnakeYAML 仅加载公共字段和属性,即具有公共 getter 和 setter 的值。
因此,一个简单的修复方法是向name类添加公共 getter 和 setter:
public String getName() {
return name;
}
public void setName(final String value) {
name = value;
}
Run Code Online (Sandbox Code Playgroud)
为了加载,你需要setter;对于倾倒,您需要吸气剂。或者,您可以声明该字段public。
如果你真的想保持字段私有并且不添加任何公共 getter / setter,这也可以工作(未经测试):
Yaml yaml = new Yaml();
yaml.setBeanAccess(BeanAccess.FIELD);
ModuleDescription desc = yaml.loadAs(/* YAML source here */,
ModuleDescription.class);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3384 次 |
| 最近记录: |