当前位置: 首页 > 知识库问答 >
问题:

NotSerializableException:为参数eligibleCurrency定义的setter接受interface类型的参数

段宏毅
2023-03-14

试图从CordaV1迁移到V3。它在V1中运行良好,但在使用CordaV3后,它的投掷错误-

在java.lang.Thread.Run(Thread.java:748)处,原因为:java.io.NotSerializableException:net.corda.core.contracts.TransactionState->数据(net.corda.core.contracts.contractState)->参数eligibleCurrency采用类型为interface java.util.List的参数,但基础类型为java.util.List->类com.xxx.AgreementNegoation.State.AgreementNegoationState

我的州的一部分

public class AgreementNegotiationState extends AgreementStateTemplate implements QueryableState {
private String baseCurrency;
private List<String> eligibleCurrency;
private int deliveryAmount;

public String getBaseCurrency() {
    return baseCurrency;
}

public void setBaseCurrency(String baseCurrency) {
    this.baseCurrency = baseCurrency;
}

public List<String> getEligibleCurrency() {
    return eligibleCurrency;
}

public void setEligibleCurrency(List<String> eligibleCurrency) {
    this.eligibleCurrency = eligibleCurrency;
}

public int getDeliveryAmount() {
    return deliveryAmount;
}

public void setDeliveryAmount(int deliveryAmount) {
    this.deliveryAmount = deliveryAmount;
}

}

请协助。

共有1个答案

尹兴生
2023-03-14

这是Corda 3中的一个bug。它将被固定在Corda 4中。

同时,解决方法是将eligibleCurrency更改为列表<?>,并根据需要强制转换其元素:

private List<?> eligibleCurrency;

public List<?> getEligibleCurrency() {
    return eligibleCurrency;
}

public void setEligibleCurrency(List<?> eligibleCurrency) {
    this.eligibleCurrency = eligibleCurrency;
}
 类似资料:
  • 我希望为我的2D游戏创造平滑的道路。看着这正是我需要的东西。每一篇文章,甚至在上,都给它一个类型,并用构造函数传递所有控制点和一个。这似乎是过时的,不再接受任何类型参数,没有它,它只能与路径工作。构造函数也不接受控制点列表。 这会产生以下错误:

  • 问题内容: 我正在写一个方法,该方法应接受不共享除父对象以外的父类型的两种类型之一的对象作为其参数。例如,类型为Dreams和Garlic。您可以同时和。我想有一个方法,可以将Dreams和Garlic都接受为其参数。 Garlic和dreams都是某些库的一部分,因此让它们实现ICrushable接口(以便我可以编写)是不可行的。 我的方法主体很长,因此重载将意味着复制代码。丑陋。我确定我可以使

  • 问题内容: 我想了解为什么下面的代码片段无法编译。将函数接受为可能具有任何返回类型的函数参数的Go方法是什么? 播放:https://play.golang.org/p/CqbuEZGy12 我的解决方案基于Volker的答案: 播放:https://play.golang.org/p/waOGBZZwN7 问题答案: 你绊倒了围棋新人一个非常普遍的误解:空接口并 不能 意味着“任何类型”。确实不

  • 我对编程和C++相当陌生。我有一个函数,我想接受以模板化值作为参数的函数指针。我的意思是... 我有这个功能: 我试过的: 结果: .h:165:22:注意:已忽略候选模板:无法将“function ,allocator >&)”与“void(*)(bool,std::vectorstd::vectorstd::allocatorstd::tuple &)”void postgrescaller:

  • 问题内容: 我得到以下错误,尽管它恰好是示例中使用的错误: 错误:类型列表未接受参数 Java是1.7版,该类未命名。 问题答案: 您可能正在导入而不是

  • 这似乎很奇怪,这并不像我预期的那样有效。我编写了一个简单的java类,它实现了可比接口并重写了compareTo()方法。但是,它不允许我传递Object以外的特定类型的参数。我在网上查看了其他人的代码,他们确实使用了其他类型的对象,我将他们的代码复制到eclipse中,但我仍然得到了同样的错误。 我的问题是;我必须做什么来比较这个对象和类型的对象,让我们说Person。比较器接口(compare