【发布时间】:2021-04-15 17:17:50
【问题描述】:
我想从 yaml 文件中加载包含基于抽象类的对象数组列表的对象。我收到此错误消息:
线程“LWJGL 应用程序”中的异常无法为 JavaBean=com.myyaml.test.ImplementationOfExampleClass@7a358cc1 创建 property=arrayListOfAbstractObjects
在“阅读器”第 1 行第 1 列中: dummyLong: 1 ^
java.lang.InstantiationException 在“阅读器”第 3 行第 3 列中: - dummyFloat:444 ^
YAML 文件
dummyLong: 1
arrayListOfAbstractObjects:
- dummyFloat: 444
- dummyDouble: 123
Java 类:
public abstract class ExampleClass {
protected ArrayList<AbstractClass> arrayListOfAbstractObjects;
protected long dummyLong = 111;
public ExampleClass() {
}
public void setArrayListOfAbstractObjects(ArrayList<AbstractClass> arrayListOfAbstractObjects) {
this.arrayListOfAbstractObjects = arrayListOfAbstractObjects;
}
public void setDummyLong(long dummyLong) {
this.dummyLong = dummyLong;
}
}
public class ImplementationOfExampleClass extends ExampleClass {
public ImplementationOfExampleClass() {
}
}
public abstract class AbstractClass {
private int dummyInt = 22;
public AbstractClass() {
}
public void setDummyInt(int dummyInt) {
this.dummyInt = dummyInt;
}
}
public class FirstImplementationOfAbstractClass extends AbstractClass {
float dummyFloat = 111f;
public FirstImplementationOfAbstractClass() {
}
public void setDummyFloat(float dummyFloat) {
this.dummyFloat = dummyFloat;
}
}
public class SecondImplementationOfAbstractClass extends AbstractClass {
double dummyDouble = 333f;
public SecondImplementationOfAbstractClass() {
}
public void setDummyDouble(double dummyDouble) {
this.dummyDouble = dummyDouble;
}
}
我的猜测是 yaml 不知道要使用哪种抽象类实现。 FirstImplementationOfAbstractClass 或 SecondImplementationOfAbstractClass。是否可以通过 yaml 加载此类类的对象?
【问题讨论】: