我有:
class Base<E> {
E e;
abstract void f(E other);
}
class Ext extends Base<String> {
// HERE
}
我想在f(E other)
中生成Ext
的实现,但无法弄清楚如何告诉生成器E
是String
在这堂课里。基类也可以是接口。
我有JCClassDecl
,因此可以查看decl.type.extending
和implementing
,但是这本手册很快就会变得一团糟,而我目前所拥有的并不是普遍有效的,所以我会这样做喜欢跳过错误的代码并以当前的一般形式提出问题。
答案 0 :(得分:1)
答案是:getTypes().memberType(
classDecl.sym.type, // this is the extending JCClassDecl
varDecl.vartype.type.tsym // this is the parameter JCVarDecl
)
:
javac
看作{{1}} API很难掌握,我希望这会对某人有所帮助。