Mar*_*nni 8 java generics android javapoet
任何人都知道如何使用javapoet执行以下操作
public class MyClassGenerated extends MyMapper<OtherClass>{
}
Run Code Online (Sandbox Code Playgroud)
我的代码:
TypeSpec generateClass() {
return classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(???????????????)
.build();
}
Run Code Online (Sandbox Code Playgroud)
El *_*oss 20
本ParameterizedTypeName类可以声明父类时指定泛型类型参数.例如,如果您的MyClassGenerated类是该类的子MyMapper类,则可以设置类似的泛型类型参数MyMapper:
TypeSpec classSpec = classBuilder("MyClassGenerated")
.addModifiers(PUBLIC)
.superclass(ParameterizedTypeName.get(ClassName.get(MyMapper.class),
ClassName.get(OtherClass.class)))
.build();
Run Code Online (Sandbox Code Playgroud)
这将生成一个TypeSpec等同于以下类的对象:
public class MyClassGenerated extends MyMapper<OtherClass> { }
Run Code Online (Sandbox Code Playgroud)
虽然未在问题中指定,但请注意,您可以通过简单地以正确的顺序将它们添加到ParameterizedTypeName.get调用中来设置任意数量的泛型类型参数:
ParameterizedTypeName.get(
ClassName.get(SuperClass.class),
ClassName.get(TypeArgumentA.class),
ClassName.get(TypeArgumentB.class),
ClassName.get(TypeArgumentC.class)
); // equivalent to SuperClass<TypeArgumentA, TypeArgumentB, TypeArgumentC>
Run Code Online (Sandbox Code Playgroud)
有关该ParameterizedTypeName.get()方法的更多信息,请参阅此处的文档或JavaPoet GitHub页面的"$ T for Types"部分.
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |