问题描述
我正在尝试实现类型为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中的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 calledamount
; 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)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!