Chúng tôi có một thư viện mã Java mà chúng tôi dự định sử dụng trong các dự án. Một số dự án này sẽ yêu cầu thêm chú thích vào đối tượng Java trong thư viện này (tức là trong một dự án, các đối tượng này sẽ được sử dụng trong thực thi servlet JAX-RS để chúng cần được chú thích bằng chú thích JAXB, JSON, v.v.). Vấn đề tôi gặp phải là tôi không thể tìm ra cách thêm các chú thích này mà không thay đổi thư viện gốc.Thêm/sửa đổi chú thích trong một dự án java
Hãy xem xét ví dụ sau:
public class MyClass
{
private String field1;
private int field2;
}
Trong một số dự án, tôi muốn lớp cư xử như thể nó là
public class MyClass
{
@Annotation1
private String field1;
@Annotation2
private int field2;
}
Ban đầu tôi nghĩ về việc sử dụng các giao diện hoặc các lớp thừa kế được chú thích riêng nhưng không thể tìm ra cách để làm điều đó (hoặc liệu nó có khả thi hay không). Tôi cũng tìm thấy đề xuất Javassist in this thread (tức là cách tiếp cận thao tác bằng bytecode Java) nhưng vấn đề là điều này cũng cần phải hoạt động trên các máy khách Android vì vậy nó không phải là một lựa chọn cho tôi. Tại thời điểm này tôi ra khỏi ý tưởng.
Tôi sẽ đánh giá cao nếu ai đó có thể trợ giúp theo bất kỳ cách nào. Có lẽ tôi đang thiếu một cái gì đó, hoặc có lẽ những gì tôi đang cố gắng làm là không đúng cách. Trong mọi trường hợp, tôi cần một số hướng dẫn ngay bây giờ để tiếp tục.
Cảm ơn rất nhiều trước.
Sự cố khi thay đổi thư viện gốc là gì? Đó là mã của bạn, gần như tôi có thể nói. – CommonsWare
Thư viện quản lý một loạt các đối tượng, bộ sưu tập của chúng và chức năng CRUD trong bộ nhớ (các ràng buộc, xác thực, v.v.). Nó không có bất kỳ kiến thức về serialization và kiên trì của các đối tượng này, và tôi muốn giữ những riêng biệt.Ngoài ra, chú thích không khả dụng có thể gây ra sự cố trên nền tảng đích: Android không có chú thích JAXB và bất kỳ khung nào xử lý chú thích không thành công trên Android mặc dù chú thích JAXB không được sử dụng (NoClassDefFoundError). Tôi muốn tránh thêm chú thích nếu chúng không được sử dụng bởi nền tảng đích. – alokoko