【发布时间】:2021-02-26 07:06:28
【问题描述】:
我是这个领域的新手。
这是一个代码sn-p:
JAXBContext jobj = JAXBContext.newInstance(Employee.class);
Marshaller mobj = jobj.createMarshaller();
Employee emp1=new Employee(1,"Jordan",50000);
mobj.marshal(emp1, new FileOutputStream("employee.xml"));
现在我知道 JAXBContext 是一个抽象类,而 Marshaller 是一个接口。
现在 createMarshaller()(Return type Marshaller) 如何返回一个 Marshaller 对象? JAXBContext 是否实现了 Marshaller?即使实现那么它是如何返回对象的?因为我试图在一个类中实现一个接口,然后创建了一个返回该接口对象的方法,但它抛出了错误。
试图模拟:
界面: 公共接口
Marshall {
public Marshall marshaller();
public int m();
}
类:
public class JaxB implements Marshall{
@Override
public Marshall marshaller() {
return new Marshall(); //error
}
public int m(){
return 1;
}
}
你能纠正我的课程吗?
【问题讨论】:
-
createMarshaller显然实例化了一些实现接口的类,并返回实例。接口的任何实例都是实现该接口的某个类的实例。这就是接口的工作原理。 -
我试图在一个类中实现一个接口,然后创建了一个返回该接口对象的方法,但它抛出了错误
-
然后在你试图这样做的代码中,你做错了。
-
好的,请向我们展示您的代码,然后您尝试了什么以及错误来自哪一行
-
您的意思是
return new JaxB();在您发布的新代码中。虽然如果有一些 other 类实现该接口会更有意义,并且该方法返回 that 类的实例。