2010-03-26 8 views
7

voglio annotare una classe in modo dinamico per renderlo il più generico possibile:classe annotazione dinamica

public class Test<T> { 

    @XmlAttribute(name = dynamicvalue) 
    T[] data; 

    public Test(String dynamicvalue) { 
    } 
} 

non v'è alcun modo per ottenere qualcosa di simile.

TA

risposta

4

No. annotazioni sono informazioni statiche a livello di classe e non possono essere influenzati dai valori dei campi istanza (no, non possono influenzati dai valori dei campi statici o).

1

È possibile creare nuove classi in fase di esecuzione caricando in un nuovo bytecode, quindi in teoria dovrebbe essere possibile (ricordare, le annotazioni sono associate alla classe, non all'oggetto). E puoi usare un'API come Java Assist per aiutarti a crearli. C'è uno annotation package che potresti guardare.

Non sarà facile.

+1

Se segui questo percorso, tieni presente che dovrai ancora creare più classi con annotazioni diverse. Questo tipo di sconfigge lo scopo di avere una classe comune. –

+0

Suppongo che jlanza abbia bisogno di fare questo per gestire alcune API esterne (forse un serializzatore XML), altrimenti dovresti semplicemente usare una variabile di istanza. –

+0

L'idea era di creare una classe generica per un oggetto e quindi usare l'annotazione della classe genitore per essere ereditata, ma cambiando automaticamente cambiando il nome. Il valore dinamico dipende dal modello di classe. – jlanza

Problemi correlati