【Java】Listを使った時の「UnsupportedOperationException」の原因と解決法
Listを使った時の「UnsupportedOperationException」の原因と解決法を紹介します。 まずは「UnsupportedOperationException」が出るプログラムの例を示します。 [crayon-5c079951acd34797360213/] このプログラムを実行すると、 [crayon-5c079951acd3e109977603/] このように出力されます。 原因 原因は、「インターフェース」の関数を呼び出したことです。 実は「List」クラスは「インターフェース」として定義されていて、「List」クラス内の関数は宣言だけで、定義はされていません。 なので「インターフェース」の関数は呼び出すことはできません。 これは「インターフェース」の仕様なので、覚えておきましょう。 解決 原因は「インターフェース」の関数を呼び出したことにありました。 なので、「インターフェース」ではない所から呼び出します。 [crayon-5c079951acd43880184121/] 「list」変数に、「ArrayList」クラスのオブジェクトを代入します。 そうすることで「list」変数が「実体化」 するので、「ArrayList」クラスで定義された「add」関数が呼び出せるようになります。 逆に、もし「実体化」されていないと、「add」関数が定義されているという保証がないことになります。 インターフェース型の変数を使用する場合は、「実体化」されているかどうかに注意を払って使うと、エラーが防げると思います。
2018/12/02 03:27