gpt4 book ai didi

JavaPoet 通用参数

转载 作者:行者123 更新时间:2023-11-30 02:40:23 24 4
gpt4 key购买 nike

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

public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type)

最佳答案

使用 TypeVariableName以及addTypeVariable可能会有所帮助 -

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);

}
}

注意 - 我的 MyClassMyOtherClassMyInterface 全部都有在名为 com 的包中,实现此 main() 的类也驻留在该包中。

使用进口 -

<小时/>

生成输出为--

package com;

public final class GenericImpl {
public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type) {
}
}

关于JavaPoet 通用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com