Ne'In JAXB noktası 2'In ObjectFactory sınıfları?
JAXB kullanarak yeniyim ve 2.1.3. xjc benim XML Şema sınıfları bir dizi oluşturmak için JAXB kullandım. Benim şema, her öğe için bir sınıf oluşturma ek olarak, ObjectFactory bir sınıf yarattı.
Doğrudan birşey elemanları, örneğin başlatmasını beni alıkoyan görünmüyor
MyElement element = new MyElement();
öğreticiler ise tercih gibi görünüyor
MyElement element = new ObjectFactory().createMyElement();
Eğer objectfactory.java içine bakarsam görüyorum
public MyElement createMyElement() {
return new MyElement();
}
anlaşma nedir? Neden ObjectFactory sınıfı burada tutmak için zahmet etmeme gerek var mı? Ayrıca eğer değişmiş bir şema yeniden derlemek için yerinde olsam üzerine olacak sanırım.
CEVAP
Geriye uyumluluk tek nedeni bu değil. :-P
Bir elemanın içeriğini kabul değerleri üzerindeki kısıtlamaları karmaşık olanları gibi daha karmaşık şemalar, bazen JAXBElement
gerçek nesneleri oluşturmanız gerekir. Elle oluşturmak için genellikle önemsiz değildir, create*
yöntem sizin için zor işi yapmak. Örnek (XHTML 1.1 şemadan):
@XmlElementDecl(namespace = "http://www.w3.org/1999/xhtml", name = "style", scope = XhtmlHeadType.class)
public JAXBElement<XhtmlStyleType> createXhtmlHeadTypeStyle(XhtmlStyleType value) {
return new JAXBElement<XhtmlStyleType>(_XhtmlHeadTypeStyle_QNAME, XhtmlStyleType.class, XhtmlHeadType.class, value);
}
Bu <head>
bir etiket içine <style>
bir etiket alır:
ObjectFactory factory = new ObjectFactory();
XhtmlHtmlType html = factory.createXhtmlHtmlType();
XhtmlHeadType head = factory.createXhtmlHeadType();
html.setHead(head);
XhtmlStyleType style = factory.createXhtmlStyleType();
head.getContent().add(factory.createXhtmlHeadTypeStyle(style));
ObjectFactory
ilk üç kullanır gereksiz () tutarlılık için yararlı olsa da kabul edilebilir, ama dördüncü bir JAXB çok, çok daha kolay hale getirir. Görüntüleme new JAXBElement
dışarı yazmak zorunda, her zaman!
Nasıl YANITLANAN gelen JAXB sınıfları ...
Nasıl char* x eşittir bir dize işaret ...
Eski stil ve yeni stil Python sınıflar...
Varsayılan SQL Server için bağlantı no...
Nasıl derlenmiş Java sınıfları yazılım...