2015-06-21 13 views
5

मैं निम्नलिखित हस्ताक्षर के साथ एक विधि कैसे उत्पन्न करूं?जावापेट जेनेरिक पैरामीटर

public <T extends MyClass> void doSomething(T t) 

अब तक मेरे पास है:

MethodSpec.methodBuilder("doSomething") 
     .addModifiers(Modifier.PUBLIC) 
     .addTypeVariable(TypeVariableName.get("T", MyClass.class)) 
     .build() 

संपादित यह वही है ऊपर कोड पैदा कर रहा है (मैं पैरामीटर जोड़ने के बारे में पता नहीं है):

public <T extends Myclass> void doSomething() 

उत्तर

9

TypeVariableName निकालें जो आप एक चर में उत्पन्न करते हैं ताकि आप इसके मूल्य का पुन: उपयोग कर सकें

TypeVariableName typeVariableName = TypeVariableName.get("T", MyClass.class); 

तो फिर तुम जिस तरह से पालन का उपयोग करें, एक सामान्य टाइप किया संरचना पास करना चाहते हैं उस प्रकार

MethodSpec spec = MethodSpec.methodBuilder("doSomething") 
          .addModifiers(Modifier.PUBLIC) 
          .addTypeVariable(typeVariableName) 
          .addParameter(typeVariableName, "t") // you can also add modifiers 
          .build(); 
1

की एक पैरामीटर जोड़ते हैं।

MethodSpec loadListInteger = MethodSpec.methodBuilder("loadListInteger") 
        .addModifiers(Modifier.PUBLIC) 
        .returns(void.class) 
        .addParameter(ParameterizedTypeName.get(List.class, Integer.class), "list") 
        .build(); 
संबंधित मुद्दे