2016-07-06 28 views
10

Tôi sử dụng jaxb2-maven-plugin để tạo các lớp JaxB từ một XSD đã cho. Nó hoạt động tốt. Nhưng bây giờ tôi muốn sử dụng java.util.Optional trong các lớp được tạo ra. Nhưng JaxB đã tạo ra các Lớp mà không có Optionals. Vì vậy, tôi buộc phải thực hiện Kiểm tra Null của mọi Biến.Làm thế nào để tạo ra JaxB-Classes với java.util.Optional?

Có ai biết làm thế nào jaxb2-maven-plugin đã được cấu hình để sử dụng java.util.Optional?

Cảm ơn sự giúp đỡ của bạn!

+1

Làm việc trên lớp được tạo ra không phải là lựa chọn tốt. Tại sao không làm phong phú thêm xsd với các trường nillable = "true". –

+0

Tôi đồng ý với @Mark bạn nên tránh sửa đổi bất kỳ lớp nào được tạo. Tôi tìm thấy một câu hỏi tương tự và Có vẻ như khả thi sử dụng Adaptor tùy chỉnh mà không sửa đổi các lớp học tạo: https://stackoverflow.com/questions/23071450/using-guavas-optional-with-xmlattribute – Woody

Trả lời

0

Có thể bạn có thể tìm thấy một cái gì đó chung chung hơn nhưng tôi không chắc chắn nếu điều này là có thể. Dù sao bạn vẫn có thể xác định tùy chỉnh Bộ điều hợp cho các loại bạn muốn là tùy chọn.

Dưới đây là một ví dụ về Integer

Đầu tiên, tạo một Adaptor

public final class IntegerOptionalAdapter extends OptionalAdapter<Integer> 
{ 
} 

Sau đó sử dụng bộ chuyển đổi này trong ràng buộc của bạn

@XmlAttribute 
@XmlJavaTypeAdapter(IntegerOptionalAdapter.class) 
private Optional<Integer> someInteger; 
+0

Nó thực sự không phải là một ý tưởng tốt để lưu trữ optionals trong lĩnh vực. Tốt hơn để tạo chúng trong getters. –

Các vấn đề liên quan