Downcasting bazen gerekli ve uygundur. Özellikle, bir yeteneğe sahip olabilen veya olmayabilen nesnelerin olduğu durumlarda ve bu yeteneğin bazı varsayılan biçimlerde bu yetenek olmadan nesneleri ele alırken kullanmak istediği durumlarda genellikle uygundur. Basit bir örnek olarak, a'nın Stringbaşka bir keyfi nesneye eşit olup olmadığını sorduğunu varsayalım . Birinin Stringdiğerine eşit Stringolması için, diğer dizenin uzunluk ve destek karakter dizisini incelemesi gerekir. Bir Eğer Stringbir eşittir olmadığı sorulur Dogancak bu uzunluğunu erişemez Dog, ama gerek olmamalıdır; bunun yerine, Stringa'nın kendisini karşılaştırması beklenen nesne birStringkarşılaştırmada varsayılan bir davranış kullanılmalıdır (diğer nesnenin eşit olmadığını bildirme).
Düşüşün en şüpheli olduğu zaman, dökülmekte olan nesnenin uygun tipte "bilindiği" zamandır. Bir nesne olduğu bilinmektedir, genel olarak, Catbir türde bir değişken kullanmalıdır Catyerine tipte bir değişken daha Animalbaşvurmak için. Ancak bunun her zaman işe yaramadığı zamanlar vardır. Örneğin, bir Zookoleksiyon, her çiftteki nesnelerin, diğer çiftlerdeki nesnelere etki edemeseler bile, birbirlerinin üzerinde hareket edebileceği beklentisiyle çift / tek dizi yuvalarındaki nesne çiftlerini tutabilir. Böyle bir durumda, her çiftteki nesnelerin, sözdizimsel olarak , herhangi başka bir çiftten nesneleri geçirebilecekleri şekilde, spesifik olmayan bir parametre tipini kabul etmeleri gerekecektir . Böylece bile Cat'ınplayWith(Animal other)yöntem, yalnızca zaman çalışacak otherbir oldu Cat, Zoobuna bir unsurunu geçmek mümkün olması gerekir Animal[]parametresinin türü olması gerekir, böylece Animalyerine Cat.
Küçültmenin meşru bir şekilde kaçınılmaz olduğu durumlarda, kişi bunu niteliksiz kullanmalıdır. Kilit soru, birinin ne zaman aşağı inmesini mantıklı bir şekilde önleyebileceğini belirlemek ve mantıklı bir şekilde mümkün olduğunda kaçınmaktır.