如何修复java.lang.ClassCastException

本文关键字:ClassCastException lang java 何修复 | 更新日期: 2023-09-27 18:03:30

下面是Propertyware API中被使用的部分代码。

public OwnerLedger appendOwnerLedgerItems(OwnerLedger ownerLedger, Owner owner) {
    object[] results = this.Invoke("appendOwnerLedgerItems", new object[] {
                ownerLedger,
                owner});
    return ((OwnerLedger)(results[0]));
}
public partial class OwnerLedger : Ledger {
}
public abstract partial class Ledger : ClientDataContainer {
private LedgerItem[] itemsField;
/// <remarks/>
[System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
public LedgerItem[] items {
    get {
        return this.itemsField;
    }
    set {
        this.itemsField = value;
    }
}
}
public abstract partial class LedgerItem : FinancialTransaction {
}
public abstract partial class OwnerLedgerItem : LedgerItem {
}
public partial class OwnerContribution : OwnerLedgerItem {
private string commentsField;
private System.Nullable<System.DateTime> dateField;
private string paymentTypeField;
private string referenceNumberField;
/// <remarks/>
[System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
public string comments {
    get {
        return this.commentsField;
    }
    set {
        this.commentsField = value;
    }
}
/// <remarks/>
[System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
public System.Nullable<System.DateTime> date {
    get {
        return this.dateField;
    }
    set {
        this.dateField = value;
    }
}
/// <remarks/>
[System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
public string paymentType {
    get {
        return this.paymentTypeField;
    }
    set {
        this.paymentTypeField = value;
    }
}
/// <remarks/>
[System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
public string referenceNumber {
    get {
        return this.referenceNumberField;
    }
    set {
        this.referenceNumberField = value;
    }
}
}

在上面的代码中,我需要使用"appendOwnerLedgerItems"方法在Propertyware中创建一个所有者贡献条目。为此,我尝试使用下面的逻辑,但它失败了。错误信息是"java.lang. lang."ClassCastException: [Lcom.realpage.propertyware.web.service.soap.AbstractLedgerItemDTO;不能强制转换为[Lcom.realpage.propertyware.web.service.soap.AbstractOwnerLedgerItemDTO;"

OwnerContribution oc = new OwnerContribution();
                oc.amount = 10;
                oc.comments = "Test Entry";
                oc.date = System.DateTime.Now;
                oc.paymentType = "Check";
                oc.referenceNumber = "12345";

Owner ow = new Owner();
      ow.ID = 12345;
LedgerItem[] li = new LedgerItem[1];
             li[0] = oc;
OwnerLedger owl = new OwnerLedger();
            owl.items = li;
OwnerLedger owl1 = client.appendOwnerLedgerItems(owl,ow); // This is where i get the cast error

如何解决这个问题?

如何修复java.lang.ClassCastException

我不太了解Propertyware,但你可以试试这个,基本上改变对象传递给invoke方法的顺序:

public OwnerLedger appendOwnerLedgerItems(OwnerLedger ownerLedger, Owner owner) {
    object[] results = this.Invoke("appendOwnerLedgerItems", new object[] {
                owner, ownerLedger});
    return ((OwnerLedger)(results[0]));
}
相关文章:
  • 没有找到相关文章