基本的java语法

时间:2014-03-02 19:48:00

标签: java

我想导入并将语义网(owl)文件的类列入eclipse。我是新的日食,因此我可能犯了简单的错误,但在我的立场,它并不那么简单。在一些研究中,我发现了一个我在eclipse中使用过的代码。我public void testAddAxioms()专门针对void收到错误。代码如下:

public static void main(String[] args) {
    File file = new File("file:c:/Users/DTN/Desktop/Final SubmissionFilteringMechanism_Ontology.owl");
    OWLOntologyManager m = OWLManager.createOWLOntologyManager();
    OWLDataFactory f = OWLManager.getOWLDataFactory();
    OWLOntology o = null;

    public void testAddAxioms() {
        try {
            o = m.loadOntologyFromOntologyDocument(Ont_Base_IRI);
            OWLClass clsA = f.getOWLClass(IRI.create(Ont_Base_IRI + "ClassA"));
            OWLClass clsB = f.getOWLClass(IRI.create(Ont_Base_IRI + "ClassB"));
            OWLAxiom ax1 = f.getOWLSubClassOfAxiom(clsA, clsB);
            AddAxiom addAxiom1 = new AddAxiom(o, ax1);
            m.applyChange(addAxiom1);

            for (OWLClass cls : o.getClassesInSignature()) {
                EditText edit = (EditText) findViewById(R.id.editText1);
                edit.setText((CharSequence) cls);
            }

            m.removeOntology(o);
        } catch (Exception e) {
            EditText edit = (EditText) findViewById(R.id.editText1);
            edit.setText("Not successfull");
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您无法在另一个方法中声明方法。这基本上就是你在main内做的事情。

testAddAxioms的声明移至main之外,如下:

public static void main(String[] args) {
    // code omitted for brevity
}

public void testAddAxioms() {
    // code omiited for brevity
}

答案 1 :(得分:1)

要调用testAddAxioms()方法,您需要先在main()方法之外声明它。它可以在同一个班级,也可以在新班级。

public class YourClass {
    public static void main(String[] args) {
        File file = new File("...");
        OWLOntologyManager m = OWLManager.createOWLOntologyManager();
        OWLDataFactory f = OWLManager.getOWLDataFactory();
        OWLOntology o = null;

        // removed your method from here
    }

    public void testAddAxioms() {
       ...
    }
}

要调用它(从您放置它的同一个地方),您必须更改其声明以接受您发送给它的类型:

public void testAddAxioms(OWLOntology o, OWLOntologyManager m, OWLDataFactory f) { ...}

然后,在你的main()方法中,实例化一个类的对象,以便能够调用它。

YourClass obj = new YourClass();
obj.testAddAxioms(o, m, f);

调用它的另一种方法是声明方法static:

public static void testAddAxioms(OWLOntology o, OWLOntologyManager m, OWLDataFactory f) { ...}

然后您不需要创建任何对象,只需调用:

testAddAxioms(o, m, f);

但是你应该仔细检查你的代码。您声明File file但未使用它。在初始化传递给方法的对象时,可能需要将它传递给某个方法或构造函数。如果你在方法中需要它,你将不得不为它添加一个额外的参数。