2015-08-25 19 views
6

Piszę generatora kodu przy użyciu JavaPoet i należy umieścić adnotację w klasieGenerowanie adnotacje wykorzystujące JavaPoet

Na przykład:

package some.package 

import org.hibernate.annotations.CacheConcurrencyStrategy; 
import javax.persistence.Entity; 
import javax.persistence.Cache 

@Entity 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class SomeClass { 
} 

Mój kod wygląda następująco:

TypeSpec spec = TypeSpec 
    .classBuilder("SomeClass") 
    .addAnnotation(Entity.class) 
    .addAnnotation(AnnotationSpec.builder(Cache.class) 
    .addMember("usage", "$L", CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
    .build()) 
    .build() 

Ten kod generuje klasę, ale wynikowy kod nie zawiera instrukcji importowania dla CacheConcurrencyStrategy. Jak wygenerować kod, aby wyprowadzić cały wymagany kod?

Odpowiedz

8

Spróbuj tego:

TypeSpec spec = TypeSpec 
    .classBuilder("SomeClass") 
    .addAnnotation(Entity.class) 
    .addAnnotation(AnnotationSpec.builder(Cache.class) 
     .addMember("usage", "$T.$L", CacheConcurrencyStrategy.class, 
      CacheConcurrencyStrategy.NONSTRICT_READ_WRITE.name()) 
     .build()) 
    .build() 

$T identyfikuje klasę enum i $L stałej enum.

+0

To działało. Dzięki – nvalada