我正在做一个使用本体来启动算法的项目。换句话说,算法的参数/返回值是从语义数据库中检索的,因此可以使用SPARQL查询启动它们。
比方说,我想在算法执行后获得它的结果,它有一个特定的类型,但我必须以一种非常通用的方式存储它。我会做Object result = myAlgorithm(param1, param2, ...);。但是,这不允许我存储结果的类型以供以后进行强制转换。我正在考虑一个解决方案,但我不确定它在Java中是否合法:
public class Value {
Object o;
Class<?> type;
public Value(Object o, Class<?> type) {
this.o = o;
this.type = type;
}
Class<?> getType() { return type; }
Object getO() { return o; }
}算法的返回类型也存储在数据库中。我知道这听起来有点复杂,但我希望您能理解我想要做的事情。
发布于 2018-05-16 17:58:07
每个对象都已经在result.getClass()方法中保持了它的类型,因此你不需要Class<?> type字段。在处理代码中,您可以执行以下操作
if (result instanceOf <SomeSubtype>) {
<SomeSubtype> resultCasted = (<SomeSubtype>) result;
}https://stackoverflow.com/questions/50367434
复制相似问题