Java中的FungibleAsset实现无法编译(Corda 4.4) [英] FungibleAsset implementation in Java won't compile (Corda 4.4)

查看:40
本文介绍了Java中的FungibleAsset实现无法编译(Corda 4.4)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试实现类型为FungibleAsset的简单状态,即使它看起来并不那么精致,它也会产生编译错误.

I'm trying to implement a simple State of type FungibleAsset, even though it seems not that delicate, it gives a compilation error.

错误:TestState不是抽象的,并且不覆盖抽象方法FungibleState公共类TestState中的getAmount()实现FungibleAsset {

error: TestState is not abstract and does not override abstract method getAmount() in FungibleState public class TestState implements FungibleAsset {

错误:TestState中的getAmount()无法在Windows中实现getAmount()FungibleState public Amount> getAmount(){

error: getAmount() in TestState cannot implement getAmount() in FungibleState public Amount> getAmount() {

退货类型金额>与数量>,其中T是类型变量:T扩展在接口FungibleState中声明的对象

return type Amount> is not compatible with Amount> where T is a type-variable: T extends Object declared in interface FungibleState

public class TestState implements FungibleAsset<Currency> {

    Amount<Issued<Currency>> amount;
    AbstractParty owner;

    @NotNull
    @Override
    public Amount<Issued<Currency>> getAmount() {
        return amount;
    }

    @NotNull
    @Override
    public Collection<PublicKey> getExitKeys() {
        return Arrays.asList(owner.getOwningKey());
    }

    @NotNull
    @Override
    public FungibleAsset<Currency> withNewOwnerAndAmount(@NotNull Amount<Issued<Currency>> newAmount, @NotNull AbstractParty newOwner) {
        return null;
    }

    @NotNull
    @Override
    public AbstractParty getOwner() {
        return owner;
    }

    @NotNull
    @Override
    public CommandAndState withNewOwner(@NotNull AbstractParty newOwner) {
        return null;
    }

    @NotNull
    @Override
    public List<AbstractParty> getParticipants() {
        return Arrays.asList(owner);
    }
}

虽然实现FungibleState可以正常工作,但我没有弄错到底是什么,但是我确实重写了必需的方法.

While implementing FungibleState works, I don't get what's exactly wrong, I do override required methods.

推荐答案

  • FungibleAsset 接口已经具有一个名为 amount 的成员;无需介绍自己的.
  • 正确的代码如下:
    • FungibleAsset interface already has a member called amount; no need to introduce your own.
    • The correct code would look like this:
    • import net.corda.core.contracts.Amount;
      import net.corda.core.contracts.CommandAndState;
      import net.corda.core.contracts.FungibleAsset;
      import net.corda.core.contracts.Issued;
      import net.corda.core.identity.AbstractParty;
      import org.jetbrains.annotations.NotNull;
      
      import java.security.PublicKey;
      import java.util.Collection;
      import java.util.Currency;
      import java.util.List;
      
      public class TestState implements FungibleAsset<Currency> {
          @NotNull
          @Override
          public Amount<Issued<Currency>> getAmount() {
              return null;
          }
      
          @NotNull
          @Override
          public Collection<PublicKey> getExitKeys() {
              return null;
          }
      
          @NotNull
          @Override
          public FungibleAsset<Currency> withNewOwnerAndAmount(
                                             @NotNull Amount<Issued<Currency>> newAmount, 
                                             @NotNull AbstractParty newOwner) {
              return null;
          }
      
          @NotNull
          @Override
          public AbstractParty getOwner() {
              return null;
          }
      
          @NotNull
          @Override
          public CommandAndState withNewOwner(@NotNull AbstractParty newOwner) {
              return null;
          }
      
          @NotNull
          @Override
          public List<AbstractParty> getParticipants() {
              return null;
          }
      }
      

      这篇关于Java中的FungibleAsset实现无法编译(Corda 4.4)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆