オブジェクトの配列を目的のクラスの配列にキャストする

Daddy Warbox:

レビューのために、誰かがこれが(コンパイル時に)動作しない原因をすばやく説明できますか?

private HashSet data;

...

public DataObject[] getDataObjects( )
{
    return (DataObject[]) data.toArray();
}

...そして、これが機能する方法を何にするのか:

public DataObject[] getDataObjects( )
{
    return (DataObject[]) data.toArray( new DataObject[ Data.size() ] );
}

これを可能にするキャスティング(またはそれが何であれ)で機能しているメカニズムは明確ではありません。

Paul Tomblin:

なぜならtoArray()、オブジェクトの配列を作成し、それをキャストObject[]するDataObject[]だけでは作ることができないからです。toArray(DataObject[])の配列を作成しますDataObject

そして、はい、これはコレクションクラスの欠点であり、GenericsがJavaに組み込まれた方法です。あなたはCollection<E>.toArray()それがEの配列を返すことができると期待するでしょうが、そうではありません。

toArray(DataObject[])呼び出しについて興味深いこと: "a"配列を十分に大きくする必要がないので、必要に応じてそれを呼び出すことがtoArray(new DataObject[0])できます。

後で配列の長さを取得toArray(new DateObject[0])する場合は、このように呼び出す方が実際には優れています.length初期の長さが大きく、渡した同じ配列オブジェクトが返された場合、NullPointerException後でsに直面する可能性があります

以前にJavaジェネリックスについて質問したところ、非常に役立つこのFAQが指摘されました。http//www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のクラスを持つ配列にオブジェクトをキャストする方法は?

分類Dev

オブジェクト配列をLong配列にキャストするときのClassCastException

分類Dev

クラスオブジェクトの配列を削除する

分類Dev

キャンバスオブジェクトの配列を作成する

分類Dev

ジャクソン:JSONをオブジェクトに変換する:オブジェクトの配列リストとオブジェクトの配列リストオブジェクトの配列リスト

分類Dev

オブジェクト配列に別のクラス行を追加する

分類Dev

複数の配列要素をオブジェクトにキャストする方法

分類Dev

Object型のオブジェクトを配列にダウンキャストする方法は?

分類Dev

PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

分類Dev

Java : 文字列配列をオブジェクトにキャストする

分類Dev

ionic2の単一クラスオブジェクト配列に配列をマージする方法

分類Dev

オブジェクト配列をジェネリック配列にキャストする

分類Dev

配列jsオブジェクトのスキャン

分類Dev

オブジェクトの配列を別のクラスに渡す

分類Dev

オブジェクトの配列リストを印刷する

分類Dev

クラス内のオブジェクトに配列をキャストするPHP。それは可能ですか?

分類Dev

Swift:インターフェイスタイプの配列からオブジェクト配列へのキャストがクラッシュする

分類Dev

チャートを作成するために、オブジェクトの配列をネストされた配列の配列に変換します

分類Dev

オブジェクトの配列をジェネリッククラスのジェネリックサブクラスの配列にキャストできないのはなぜですか?

分類Dev

オブジェクトの可変配列をswift(クラスの配列)で別のオブジェクトに追加する方法

分類Dev

オブジェクトの配列内にネストされたオブジェクトの配列にオブジェクトをプッシュする

分類Dev

オブジェクトの配列を配列の配列に変換する

分類Dev

PHP次のような配列にキャストされたオブジェクトを作成する方法:(配列)カスタム関数を使用した$ object

分類Dev

Java:オブジェクトを配列型にキャストする

分類Dev

Object配列をString配列にキャストするには、オブジェクトのtoString()メソッドを使用しますか?

分類Dev

ポインタの配列をクラスオブジェクトに渡す

分類Dev

javascriptのクラス配列からオブジェクトを取得する

分類Dev

クラス内でオブジェクトの配列を作成する

分類Dev

オブジェクトの配列からオブジェクトをスプライスする方法は?

Related 関連記事

  1. 1

    複数のクラスを持つ配列にオブジェクトをキャストする方法は?

  2. 2

    オブジェクト配列をLong配列にキャストするときのClassCastException

  3. 3

    クラスオブジェクトの配列を削除する

  4. 4

    キャンバスオブジェクトの配列を作成する

  5. 5

    ジャクソン:JSONをオブジェクトに変換する:オブジェクトの配列リストとオブジェクトの配列リストオブジェクトの配列リスト

  6. 6

    オブジェクト配列に別のクラス行を追加する

  7. 7

    複数の配列要素をオブジェクトにキャストする方法

  8. 8

    Object型のオブジェクトを配列にダウンキャストする方法は?

  9. 9

    PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

  10. 10

    Java : 文字列配列をオブジェクトにキャストする

  11. 11

    ionic2の単一クラスオブジェクト配列に配列をマージする方法

  12. 12

    オブジェクト配列をジェネリック配列にキャストする

  13. 13

    配列jsオブジェクトのスキャン

  14. 14

    オブジェクトの配列を別のクラスに渡す

  15. 15

    オブジェクトの配列リストを印刷する

  16. 16

    クラス内のオブジェクトに配列をキャストするPHP。それは可能ですか?

  17. 17

    Swift:インターフェイスタイプの配列からオブジェクト配列へのキャストがクラッシュする

  18. 18

    チャートを作成するために、オブジェクトの配列をネストされた配列の配列に変換します

  19. 19

    オブジェクトの配列をジェネリッククラスのジェネリックサブクラスの配列にキャストできないのはなぜですか?

  20. 20

    オブジェクトの可変配列をswift(クラスの配列)で別のオブジェクトに追加する方法

  21. 21

    オブジェクトの配列内にネストされたオブジェクトの配列にオブジェクトをプッシュする

  22. 22

    オブジェクトの配列を配列の配列に変換する

  23. 23

    PHP次のような配列にキャストされたオブジェクトを作成する方法:(配列)カスタム関数を使用した$ object

  24. 24

    Java:オブジェクトを配列型にキャストする

  25. 25

    Object配列をString配列にキャストするには、オブジェクトのtoString()メソッドを使用しますか?

  26. 26

    ポインタの配列をクラスオブジェクトに渡す

  27. 27

    javascriptのクラス配列からオブジェクトを取得する

  28. 28

    クラス内でオブジェクトの配列を作成する

  29. 29

    オブジェクトの配列からオブジェクトをスプライスする方法は?

ホットタグ

アーカイブ