No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Newer Version Available
コレクションキャスト
Apex のコレクションには実行時に宣言される型が存在するため、Apex ではコレクションキャストを許可しています。
コレクションは、Java で配列をキャストするのと似た方法でキャストされます。たとえば、CustomerPurchaseOrder クラスが PurchaseOrder クラスの子である場合、CustomerPurchaseOrder オブジェクトのリストを PurchaseOrder オブジェクトのリストに割り当てることができます。
1swfobject.registerObject("clippy.codeblock-0", "9");public virtual class PurchaseOrder {
2
3 Public class CustomerPurchaseOrder extends PurchaseOrder {
4
5 }
6 {
7 List<PurchaseOrder> POs = new PurchaseOrder[] {};
8 List<CustomerPurchaseOrder> CPOs = new CustomerPurchaseOrder[]{};
9 POs = CPOs;}
10 }CustomerPurchaseOrder リストが PurchaseOrder リスト変数に割り当てられると、そのインスタンスが最初は CustomerPurchaseOrder のリストとしてインスタンス化されるため、CustomerPurchaseOrder オブジェクトのリストに再度キャストすることができます。このようにインスタンス化された PurchaseOrder オブジェクトのリストは、PurchaseOrder オブジェクトのリストに CustomerPurchaseOrder オブジェクトのみが含まれている場合でも、CustomerPurchaseOrder オブジェクトのリストにキャストできません。
CustomerPurchaseOrders オブジェクトのみを含む PurchaseOrder リストのユーザが PurchaseOrder の非 CustomerPurchaseOrder サブクラス (InternalPurchaseOrder など) を挿入しようとすると、実行時例外が発生します。これは、Apex のコレクションには実行時に宣言される型が存在するためです。