1
다음 서명으로 메소드를 생성하는 방법은 무엇입니까? TypeVariableName
addTypeVariable
와 함께 여기에 도움이 될 수 사용JavaPoet 일반 매개 변수
public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type)
다음 서명으로 메소드를 생성하는 방법은 무엇입니까? TypeVariableName
addTypeVariable
와 함께 여기에 도움이 될 수 사용JavaPoet 일반 매개 변수
public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type)
-
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);
}
}
주 - I했습니다 내 모든 곳 클래스가 com
라는 이름의 패키지 내 MyClass
, MyOtherClass
및 MyInterface
이 구현은 main()
도 상주합니다.
수입 사용 -
는 다음과 같이 출력을 생성 -
약간 늦게package com; public final class GenericImpl { public static <T extends MyClass & MyInterface> MyOtherClass someMethod(T type) { } }
하지만 덕분에 여기 https://github.com/square를 발행 할 수있는 링크입니다/javapoet/issues/543 – Pedram
@Pedram - wc. 당신은 내가 믿는 쟁점으로 그것을 게시하기에는 너무 빠르다. :) – nullpointer
그래, 만날 마감 시간이있다;) – Pedram