Corda 我的@InitiatingFlow可以是泛型类吗?

Corda 我的@InitiatingFlow可以是泛型类吗?,corda,Corda,是否可以将@InitiatingFlow定义为泛型类 @InitiatingFlow public class FungibleStateIssueSend<T extends Oil> extends FlowLogic<SignedTransaction> {...} @InitiatingFlow 公共类FungibleStateSsuseSend扩展流逻辑{…} …如果我尝试在接收流中的@InitiatedBy注释上获得编译错误: @InitiatedBy(F

是否可以将@InitiatingFlow定义为泛型类

@InitiatingFlow
public class FungibleStateIssueSend<T extends Oil> extends FlowLogic<SignedTransaction> {...}
@InitiatingFlow
公共类FungibleStateSsuseSend扩展流逻辑{…}
…如果我尝试在接收流中的@InitiatedBy注释上获得编译错误:

@InitiatedBy(FungibleStateIssueSend.class)
public class FungibleStateIssueReceive extends FlowLogic<Void> {...}
@initialedby(fungibleStateSsuseSend.class)
公共类FungibleStateSsusereCeive扩展了FlowLogic{…}
错误:

Incompatible types. Found: 'java.lang.Class<com.template.flows.FungibleStateIssueSend>', required: 'java.lang.Class<? extends net.corda.core.flows.FlowLogic<?>>'
不兼容的类型。找到:“java.lang.Class”,必需:“java.lang.Class>”
下面是我将如何使用它:

// Define the delivery unit (bbl, m3 or tonne) and corresponding API of the oil in that unit:
WtiBbl wtiBbl = new WtiBbl(new BigDecimal("4.5"));

// Set Amount of units for delivery:
Amount<WtiBbl> amountWtiBbl = new Amount<>(1_000L, wtiBbl);

// Create a FungibleState so the delivery can be divided between different shippers:
OilFungibleState<WtiBbl> juneProduction = new OilFungibleState<>(Month.JUNE, Collections.singletonList(partyA), amountWtiBbl);

// Issue the FungibleState onto the ledger...
FungibleStateIssueSend<WtiBbl> fungibleStateIssueSend = new FungibleStateIssueSend<>(juneProduction);
CordaFuture<SignedTransaction> future = partyANode.startFlow(fungibleStateIssueSend);
mockNetwork.runNetwork();

SignedTransaction signedTransaction = future.get();
//定义输送单位(桶、立方米或吨)以及该单位中油的相应API:
WtiBbl WtiBbl=新的WtiBbl(新的大十进制(“4.5”));
//设置交付的单位数量:
金额amountWtiBbl=新金额(1_000L,wtiBbl);
//创建一个可替代财产,以便可以在不同的托运人之间分配交付:
OilfungibleEstate juneProduction=新的OilfungibleEstate(6月,系列单例列表(partyA),金额为IBBL);
//在分类账上发布可替换资产。。。
FungibleStateSussend FungibleStateSussend=新的FungibleStateSussend(六月生产);
CordaFuture future=partyANode.startFlow(可替换的estateissuend);
mockNetwork.runNetwork();
SignedTransaction SignedTransaction=future.get();

我可以绕过这个限制。我只是想了解这是Corda产品还是Java产品?

它更像是Java产品

例如,如果我对类类型使用通配符,它可以很好地处理泛型类型参数

@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation{
    public Class<?> value();
}
但是当我们将通配符绑定到下面的内容时,编译器会抱怨

@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation{
    public Class<? extends FlowLogic<?>> value();
}
@Target(ElementType.TYPE\u使用)
@保留(RetentionPolicy.RUNTIME)
@接口测试说明{
公共类>值();
}

但是如果我们从流逻辑中删除通配符,它就会工作。不确定编译器为什么会因为该通配符而抱怨。

请共享完整的错误堆栈。@AdelRustum编译错误:错误:不兼容的类型:Class无法转换为Class>能否更新问题并添加使用/call
FungibleStateCreate
的部分?我想看看你是如何定义/使用它的。@AdelRustum我已经更新了这个问题。我知道我可以通过其他方式实现我想要实现的目标。这只是我遇到的一个我没有预料到的错误,我正在试图理解这是Corda限制还是我不知道的java注释(我对java很陌生)。老实说,我没有看到你的代码有任何错误。
@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation{
    public Class<? extends FlowLogic<?>> value();
}