首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaPoet泛型参数

JavaPoet泛型参数
EN

Stack Overflow用户
提问于 2017-01-29 00:20:55
回答 1查看 1.1K关注 0票数 1

如何生成具有以下签名的方法?

代码语言:javascript
复制
public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 14:57:20

在这里使用TypeVariableNameaddTypeVariable可能会有所帮助-

代码语言:javascript
复制
import com.squareup.javapoet.*;
import javax.lang.model.element.Modifier;
import java.io.IOException;

public class AttemptGeneric {

  public static void main(String[] args) throws IOException {

    ClassName myClass = ClassName.get("com", "MyClass");
    ClassName myOtherClass = ClassName.get("com", "MyOtherClass");
    ClassName myInterface = ClassName.get("com", "MyInterface");
    TypeVariableName typeVariableName = TypeVariableName.get("T", myClass);

    MethodSpec methodSpec = MethodSpec.methodBuilder("someMethod")
            .returns(myOtherClass)
            .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
            .addTypeVariable(typeVariableName.withBounds(myInterface))
            .addParameter(typeVariableName,"type")
            .build();


    TypeSpec genericClass = TypeSpec.classBuilder("GenericImpl")
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
            .addMethod(methodSpec)
            .build();

    JavaFile javaFile = JavaFile.builder("com", genericClass)
            .build();

    javaFile.writeTo(System.out);

  }
}

Note -我的MyClassMyOtherClassMyInterface都在一个名为com的包中,实现main()的类也驻留在这个包中。

所用进口品-

生成输出为--

包com;公共最终类GenericImpl { public静态 MyOtherClass someMethod(T类型){}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41916359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档