Java中的Fungibleaset实现;t编译(Corda 4.4)

Java中的Fungibleaset实现;t编译(Corda 4.4),java,corda,Java,Corda,我正在尝试实现一个简单的类型为fungibleaset的状态,尽管它看起来没有那么微妙,但它会导致编译错误 错误:TestState不是抽象的,并且不重写抽象方法 FungibleState公共类TestState中的getAmount()实现 可替换集{ 错误:TestState中的getAmount()无法在中实现getAmount() 可替换房地产公共金额>getAmount(){ 退货类型金额>与不兼容 Amount>其中T是类型变量:T 扩展接口中声明的对象 公共类TestState实

我正在尝试实现一个简单的类型为fungibleaset的状态,尽管它看起来没有那么微妙,但它会导致编译错误

错误:TestState不是抽象的,并且不重写抽象方法 FungibleState公共类TestState中的getAmount()实现 可替换集{

错误:TestState中的getAmount()无法在中实现getAmount() 可替换房地产公共金额>getAmount(){

退货类型金额>与不兼容 Amount>其中T是类型变量:T 扩展接口中声明的对象

公共类TestState实现了FungibleAsset{
金额;
第三方所有者;
@NotNull
@凌驾
公共金额getAmount(){
退货金额;
}
@NotNull
@凌驾
公共集合getExitKeys(){
返回Arrays.asList(owner.getOwningKey());
}
@NotNull
@凌驾
具有newOwner和damount(@NotNull Amount newAmount,@NotNull AbstractParty newOwner)的公共可替换项集{
返回null;
}
@NotNull
@凌驾
公共抽象方getOwner(){
归还所有人;
}
@NotNull
@凌驾
public commandState with newOwner(@NotNull AbstractParty newOwner){
返回null;
}
@NotNull
@凌驾
公开名单{
返回数组。asList(所有者);
}
}
在实现FungibleState的过程中,我不知道什么是完全错误的,我会覆盖所需的方法。

  • fungibleaset
    接口已经有一个名为
    amount
    的成员;无需介绍您自己的成员
  • 正确的代码如下所示:
import net.corda.core.contracts.Amount;
导入net.corda.core.contracts.commandState;
导入net.corda.core.contracts.fungibleaset;
进口净额。corda.core.contracts.Issued;
导入net.corda.core.identity.AbstractParty;
导入org.jetbrains.annotations.NotNull;
导入java.security.PublicKey;
导入java.util.Collection;
导入java.util.Currency;
导入java.util.List;
公共类TestState实现了FungibleAsset{
@NotNull
@凌驾
公共金额getAmount(){
返回null;
}
@NotNull
@凌驾
公共集合getExitKeys(){
返回null;
}
@NotNull
@凌驾
具有新所有者和数量的公共可替换资产(
@NotNull Amount newAmount,
@NotNull(新所有者){
返回null;
}
@NotNull
@凌驾
公共抽象方getOwner(){
返回null;
}
@NotNull
@凌驾
public commandState with newOwner(@NotNull AbstractParty newOwner){
返回null;
}
@NotNull
@凌驾
公开名单{
返回null;
}
}
  • fungibleaset
    接口已经有一个名为
    amount
    的成员;无需介绍您自己的成员
  • 正确的代码如下所示:
import net.corda.core.contracts.Amount;
导入net.corda.core.contracts.commandState;
导入net.corda.core.contracts.fungibleaset;
进口净额。corda.core.contracts.Issued;
导入net.corda.core.identity.AbstractParty;
导入org.jetbrains.annotations.NotNull;
导入java.security.PublicKey;
导入java.util.Collection;
导入java.util.Currency;
导入java.util.List;
公共类TestState实现了FungibleAsset{
@NotNull
@凌驾
公共金额getAmount(){
返回null;
}
@NotNull
@凌驾
公共集合getExitKeys(){
返回null;
}
@NotNull
@凌驾
具有新所有者和数量的公共可替换资产(
@NotNull Amount newAmount,
@NotNull(新所有者){
返回null;
}
@NotNull
@凌驾
公共抽象方getOwner(){
返回null;
}
@NotNull
@凌驾
public commandState with newOwner(@NotNull AbstractParty newOwner){
返回null;
}
@NotNull
@凌驾
公开名单{
返回null;
}
}

我粘贴了完全相同的代码,但有相同的错误,它在您的机器上工作吗?我猜有一些奇怪的事情,真的
FungibleState
有成员
金额:金额
FungibleAsset
金额:金额
覆盖它。错误消息说我没有覆盖
getAmount()
FungibleState
中!是的,它对我有效。我创建了一个新类,当我键入
implements FungibleSet
时,Intellij显示了一个弹出窗口,建议实现接口方法。当我单击Yes时,它为我生成了所有函数,并成功编译了该类。我建议您从头开始,crea创建一个新类,看看它是如何运行的。克隆了java模板并做到了这一点,这是一个由Intellij生成的覆盖的最小类,但有相同的错误消息。做了同样的事情,但使用了Kotlin类,它就可以工作了。无论如何,我将尝试使用Kotlin状态或找到另一种解决方法。我用
import
s更新了我的答案声明;也许那会有帮助。完全相同的导入但没有,这让我很奇怪我甚至重新启动了。我粘贴了完全相同的代码,但同样的错误,它在你的机器上工作了吗?我想有一些奇怪的事情,真的
FungibleState
有成员
amount:amount
fungibleaset
amount:Amou>覆盖了它nt
。错误消息说我没有覆盖
getAmount()
FungibleState
中!是的,它对我有效。我创建了一个新类,当我键入
implements FungibleSet
时,Intellij显示一个弹出窗口,建议实现接口方法。当我单击Yes时,它为我和类c生成了所有函数
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);
    }
}