2016-08-23 9 views
0

以下は、消費されたPropertyware APIのコード部分です。上記のコードでjava.lang.ClassCastExceptionを修正するには?

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; 
    } 
} 
} 

iがPropertywareにおける所有者寄与エントリを作成する「appendOwnerLedgerItems」メソッドを使用する必要があります。そのために私は以下のロジックを使用しようとするが失敗する。エラーメッセージは "java.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 

この問題を解決するにはどうすればよいですか?

+0

私はあなたが提供しているオブジェクトの一つが親AbstractLedgerItemDTOかを持っていると思いますAbstractOwnerLedgerItemDTOであり、サーバーはこれと反対の方法を期待しています。** new object [] {owner {owner、ownerLedger} ** – tonakai

+0

@tonakai上記のコードをどこに渡したいのですか?少し詳しく教えてくださいもっと? – Ean

答えて

0

私はPropertywareについて多くを知らないが、あなたはこれを試すことができ、基本的にはinvokeメソッドに渡されたオブジェクトの順序を変更します。

public OwnerLedger appendOwnerLedgerItems(OwnerLedger ownerLedger, Owner owner) { 
    object[] results = this.Invoke("appendOwnerLedgerItems", new object[] { 
       owner, ownerLedger}); 
    return ((OwnerLedger)(results[0])); 
} 
+0

これを行うと、「Pin.com.propertyware.OwnerLedger」と入力すると、タイプ「Pin.com.propertyware.Owner」のオブジェクトをキャストできません。 – Ean

+0

Webサービスの参照コードを変更するのは正しいですか?上記で提案したのは、Propertyware APIリファレンスにあるコードです。 – Ean

+0

ええ、私はそれが良いアイデアではないと思う、私はちょうど問題を把握しようとしていた:D遠隔デバッグ – tonakai

関連する問題