Downcasting terkadang perlu dan tepat. Secara khusus, itu sering tepat dalam kasus di mana seseorang memiliki objek yang mungkin atau mungkin tidak memiliki beberapa kemampuan, dan seseorang ingin menggunakan kemampuan itu ketika ada saat menangani objek tanpa kemampuan itu dalam beberapa mode standar. Sebagai contoh sederhana, anggap a Stringditanya apakah itu sama dengan beberapa objek arbitrer lainnya. Agar satu Stringsama dengan yang lain String, ia harus memeriksa panjang dan dukungan array karakter dari string lainnya. Jika Stringditanya apakah sama dengan Dog, bagaimanapun, ia tidak dapat mengakses panjangnya Dog, tetapi seharusnya tidak harus; sebagai gantinya, jika objek yang Stringseharusnya dibandingkan itu sendiri bukan aString, perbandingan harus menggunakan perilaku default (melaporkan bahwa objek lain tidak sama).
Waktu ketika downcasting harus dianggap sebagai yang paling meragukan adalah ketika objek yang dilemparkan "diketahui" memiliki tipe yang tepat. Secara umum, jika suatu objek dikenal sebagai Cat, seseorang harus menggunakan variabel tipe Cat, bukan variabel tipe Animal, untuk merujuknya. Namun ada kalanya ini tidak selalu berhasil. Sebagai contoh, Zookoleksi mungkin menahan pasangan objek dalam slot array genap / ganjil, dengan harapan bahwa objek di setiap pasangan akan dapat saling bertindak, bahkan jika mereka tidak dapat bertindak terhadap objek di pasangan lain. Dalam kasus seperti itu, objek dalam setiap pasangan masih harus menerima tipe parameter non-spesifik sehingga mereka, secara sintaksis , dapat melewati objek dari pasangan lain. Jadi, bahkan jika CatituplayWith(Animal other)Metode hanya akan bekerja ketika othersuatu Cat, Zooakan perlu untuk dapat melewatinya elemen dari Animal[], jadi tipe parameternya harus Animallebih daripada Cat.
Dalam kasus di mana downcasting secara sah tidak dapat dihindari, seseorang harus menggunakannya tanpa keraguan. Pertanyaan kuncinya adalah menentukan kapan seseorang secara bijaksana dapat menghindari downcasting, dan menghindarinya jika memungkinkan.