作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类如下:
public class StreamEventSuccess<T> {
private final T event;
public StreamEventSuccess(final T event) {
this.event = event;
}
public T getEvent() {
return event;
}
}
我尝试启动它:
StreamEventSuccess<BusinessEvent> success = new StreamEventSuccess<BusinessEvent>(event);
我得到:
java.lang.NoSuchMethodError: com.ryan.protocol.StreamEventSuccess.<init>(Lcom/ryan/domain/event/BusinessEvent;)V
知道为什么吗?
event
参数的类型为 BusinessEvent
最佳答案
如果出现以下情况,就会发生您所描述的问题:
your-library-version-1
有一个构造函数 StreamEventSuccess(BusinessEvent event)
project-x
用 your-library-version-1
编译的.your-library-version-2
已成为通用 StreamEventSuccess(T event)
.project-x
与 your-library-version-2
.如果是这种情况,只需重新编译调用新构造函数的类即可。
发生这种情况是因为泛型形式的构造函数的实际类型是 <init>(Ljava/lang/Object;)V
所以你必须在生成该类之后重新编译依赖项,因为它们的字节码指向构造函数的旧(非通用)版本 <init>(Lcom/ryan/domain/event/BusinessEvent;)V
关于java - 实例化泛型类时出现 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112749/
我是一名优秀的程序员,十分优秀!