首先,我在 method1
内生成了一个本体。它是成功的。然后在第二种方法中,我需要将这个生成的本体用于另一个过程。我使用了以下代码。它给出了一个错误:
Exception in thread "main" java.lang.NullPointerException.
问题出在哪里?我需要如何将 method1
中生成的本体转移到 method2
中?
public class OntologyCreation {
public static void main (String args[]) {
//main
OntologyCreation ont = new OntologyCreation();
OntModel m = null;
String ontoClass = null;
ont.method2(ontoClass, m);
public void method1(OntModel m) { //for ontologyCreation
m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
-----
-----
}
public ArrayList<String> method2(String ontoClass, OntModel m) { // 2nd method for use generated ontology to another process
method1(m);
m.read("http://localhost/myont/ont.owl"); ????????
ExtendedIterator<OntClass> classes = ((OntModel) m).listClasses();
----------
----------
}
return xx;
}
最佳答案
如果您在OntologyCreation
实例中多次使用OntModel
,您可以使用一个字段来存储变量:
private OntModel m;
public void method1() {
this.m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
}
public ArrayList<String> method2(String ontoClass) {
method1();
this.m.read("http://localhost/myont/ont.owl"); // use field value
另一种方法是返回创建的OntModel
,如其他答案中所述。
注意:Java 始终是按值传递的,这就是为什么 method2
方法中的值仍为 null
,请参阅 Is Java "pass-by-reference" or "pass-by-value"?
关于java - 在java中使用一个方法内生成的本体到另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668419/