2015-03-18 1 views
8

Je génère du code avec JavaPoet.Comment ajouter le point d'interrogation «Any Type» dans JavaPoet?

Quelque part dans le code généré, je veux ajouter une méthode qui a l'argument suivant.

... 
    public B someMethod(final AbstractObjectBuilder<Persoon,?> builder) { 
     ... 
    } 
... 

donc mon code JavaPoet devrait ressembler à ceci

//This does not compile, since I don't know what to put as last argument (questionmark) 
ParameterizedTypeName parameterizedTypeName = ParameterizedTypeName.get(AbstractObjectBuilder.class, propertyType,?); 

ParameterSpec parameterSpec = ParameterSpec.builder(parameterizedTypeName, name+"Builder", Modifier.FINAL).build(); 

MethodSpec modMethod = MethodSpec.methodBuilder(name) 
         .addModifiers(Modifier.PUBLIC) 
         .addParameter(parameterSpec) 
         .returns(TypeVariableName.get("B")); 
... 
+0

vous pouvez utiliser '> ' – Prashant

Répondre

5

Foo<?> est une forme courte de Foo<? extends Object>. Utilisez WildcardTypeName pour cela.

+0

Pourriez-vous donner un exemple? – confile

+3

Ceci: ParameterTypeName.get (ClassName.get (Class.class), WildcardTypeName.subtypeOf (Object.class) donne une classe . – Thecheeselover