类型不匹配无法从BytecodeCodeProcessor<new AbstractBytecodeCodeVisitor(){}>
转换为BytecodeCodeProcessor<AbstractBytecodeCodeVisitor>
public abstract class AbstractBytecodeCodeVisitor {
}
public class BytecodeCodeProcessor
<T extends AbstractBytecodeCodeVisitor> {
public BytecodeCodeProcessor(ClassSourceResult classSourceResult,
T visitor) {
}
}
BytecodeCodeProcessor<AbstractBytecodeCodeVisitor> processor =
new BytecodeCodeProcessor<>(classSourceResult,
new AbstractBytecodeCodeVisitor() {
});
答案 0 :(得分:0)
通过new AbstractBytecodeCodeVisitor() {}
实例化的匿名类是AbstractBytecodeCodeVisitor
的子类。此匿名子类不等于BytecodeCodeProcessor<AbstractBytecodeCodeVisitor>
指定的泛型类型参数。 Anonymous AbstractBytecodeCodeVisitor!= AbstractBytecodeCodeVisitor,因此编译错误。代码可以通过多种方式修复,其中一些方法列在以下链接中。
Generics and anonymous classes (bug or feature?)
一个解决方案:
BytecodeCodeProcessor<AbstractBytecodeCodeVisitor> processor =
new BytecodeCodeProcessor<AbstractBytecodeCodeVisitor>(
classSourceResult, new AbstractBytecodeCodeVisitor() {}
);