2016-09-09 7 views
5

मैं जावापॉइट का उपयोग मूल्य के रूप में एक प्रकार के अक्षर के साथ एनोटेशन उत्पन्न करना चाहता हूं।कक्षा शाब्दिक उत्पन्न करने के लिए मैं जावापेट कैसे प्राप्त करूं?

@AutoService(MyService.class) 
public class GeneratedClass implements MyService { 
} 

मैं सभी विकल्पों को मैं के बारे में सोच सकते हैं की कोशिश की है, लेकिन कोई भी काम: उदाहरण के लिए:

TypeSpec.classBuilder("GeneratedClass") 
    .addModifiers(Modifier.PUBLIC) 
    .addSuperinterface(MyService.class) 
    .addAnnotation(
     AnnotationSpec.builder(AutoService.class).addMember(
      "value", "$L", MyService.class 
     ).build() 
    ) 

का उपयोग कर $L$T उत्पन्न my.package.MyService का उपयोग कर उत्पन्न interface MyService

है, जो करीब है लेकिन .class भाग याद करता है। expected name but was my.package.MyService

मैं इसे कैसे MyService.class एनोटेशन मूल्य के रूप में उत्पन्न करने के लिए मिलता है:

$N का उपयोग कर एक त्रुटि देता है?

उत्तर

2

क्या आपने इसे आजमाया?

TypeSpec.classBuilder("GeneratedClass") 
      .addModifiers(Modifier.PUBLIC) 
      .addSuperinterface(MyService.class) 
      .addAnnotation(
        AnnotationSpec.builder(AutoService.class).addMember(
        "value", "$T.class", MyService.class).build() 
      ).build(); 
+0

मुझे ऐसा करने का अन्य तरीका नहीं पता है। मुझे लगता है कि इसकी अनुशंसा की गई थी क्योंकि 'प्रारूप' एक 'स्ट्रिंग' है जो 'एनम' नहीं है। –

+0

यह बिल्कुल सही तरीका है। –

+0

जब आप 'पैरामीटरेटेड टाइप नाम' से निपट रहे हैं तो क्या होगा? – WouterH

संबंधित मुद्दे