如何生成具有以下签名的方法?
public <T extends MyClass> void doSomething(T t)
到目前为止,我有:
MethodSpec.methodBuilder("doSomething")
.addModifiers(Modifier.PUBLIC)
.addTypeVariable(TypeVariableName.get("T", MyClass.class))
.build()
编辑这就是上面代码生成的内容(我不知道如何添加参数):
public <T extends Myclass> void doSomething()
答案 0 :(得分:12)
将您生成的*x + 1
提取到变量中,以便重复使用其值
#![feature(zero_one)]
use std::ops::Add;
use std::num::One;
fn inc<T: Copy + One + Add<T, Output = T>>(x: &mut T) {
*x = *x + T::one();
}
fn main() {
let mut x: i32 = 10;
let mut y: u8 = 1;
inc(&mut x);
inc(&mut y);
println!("{} {}", x, y);
}
然后添加该类型的参数
TypeVariableName
答案 1 :(得分:2)
如果要传递Generic类型结构,请使用以下方法。
MethodSpec loadListInteger = MethodSpec.methodBuilder("loadListInteger")
.addModifiers(Modifier.PUBLIC)
.returns(void.class)
.addParameter(ParameterizedTypeName.get(List.class, Integer.class), "list")
.build();