Abbiamo una libreria di codice Java che intendiamo utilizzare tra i progetti. Alcuni di questi progetti richiedono l'aggiunta di annotazioni agli oggetti Java in questa libreria (ad esempio, in un progetto, questi oggetti verranno utilizzati in un'implementazione di servlet JAX-RS, quindi devono essere annotati con annotazioni JAXB, JSON, ecc.). Il problema che sto avendo è che non riuscivo a capire come aggiungere queste annotazioni senza cambiare la libreria originale.Aggiunta/modifica di annotazioni in un progetto java
Considerate questo esempio:
public class MyClass
{
private String field1;
private int field2;
}
In alcuni progetti, vorrei classe a comportarsi come se fosse
public class MyClass
{
@Annotation1
private String field1;
@Annotation2
private int field2;
}
Inizialmente ho pensato di usare interfacce o classi derivate che vengono annotati separatamente ma non riuscivo a capire come farlo (o se sia possibile o meno). Ho anche trovato il suggerimento Javassist in this thread (cioè l'approccio di manipolazione bytecode Java) ma il problema è che questo deve funzionare anche sui client Android, quindi non è un'opzione per me. A questo punto sono fuori di idee.
Sarei grato se qualcuno potesse aiutare in qualsiasi modo. Forse mi manca qualcosa, o forse quello che sto cercando di fare non è la strada giusta. In ogni caso, ho bisogno di una guida ora per poter procedere.
Grazie mille in anticipo.
Qual è il problema con il cambiamento della libreria originale? È il tuo codice, vicino come posso dire. – CommonsWare
La libreria gestisce un gruppo di oggetti, le loro raccolte e la funzionalità CRUD in memoria (vincoli, convalida ecc.). Non ha alcuna conoscenza di serializzazione e persistenza di questi oggetti, e mi piacerebbe tenerli separati.Inoltre, le annotazioni non disponibili possono causare problemi sulla piattaforma di destinazione: Android non ha le annotazioni JAXB e qualsiasi framework che elabora le annotazioni non riesce su Android anche se le annotazioni JAXB non vengono utilizzate (NoClassDefFoundError). Vorrei evitare di aggiungere annotazioni se non verranno utilizzate dalla piattaforma di destinazione. – alokoko