gpt4 book ai didi

java - 实例化泛型类时出现 NoSuchMethodException

转载 作者:行者123 更新时间:2023-11-30 11:04:08 27 4
gpt4 key购买 nike

我有一个类如下:

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)
  • 你有一个项目(或类(class))project-xyour-library-version-1 编译的.
  • your-library-version-2已成为通用 StreamEventSuccess(T event) .
  • 你正在运行project-xyour-library-version-2 .

如果是这种情况,只需重新编译调用新构造函数的类即可。

发生这种情况是因为泛型形式的构造函数的实际类型是 <init>(Ljava/lang/Object;)V所以你必须在生成该类之后重新编译依赖项,因为它们的字节码指向构造函数的旧(非通用)版本 <init>(Lcom/ryan/domain/event/BusinessEvent;)V

关于java - 实例化泛型类时出现 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com