TL; DR: bunu yapma.
Burada gösterdiğiniz şey kırılgan kod.
Arayüz bir sözleşmedir. "Hangi nesneyi alırsanız alın X ve Y'yi yapabilir" diyor. Yazıldığı gibi, arabiriminiz ne X ne de Y yapmaz, çünkü yığın taşmasına neden olacağı garanti edilir.
Bir Hata veya alt sınıfı atmak, yakalanmaması gereken ciddi bir hatayı gösterir:
Hata, makul bir uygulamanın yakalamaya çalışmaması gereken ciddi sorunları gösteren Throwable'ın bir alt sınıfıdır.
Ayrıca, StackOverflowError öğesinin üst sınıfı olan VirtualMachineError şunları söylüyor:
Java Sanal Makinesinin bozulduğunu veya çalışmaya devam edebilmesi için gerekli kaynakların tükendiğini belirtmek için atılır.
Programınız JVM kaynakları ile ilgilenmemelidir . JVM'nin işi budur. Normal çalışmanın bir parçası olarak JVM hatasına neden olan bir program yapmak kötüdür. Programınızın çökmesini garanti eder veya bu arabirimin kullanıcılarını, ilgilenmemesi gereken hataları yakalamaya zorlar.
Eric Lippert'i "C # dil tasarım komitesinin üyesi" emeritus gibi çabalardan tanıyabilirsiniz . İnsanları başarıya veya başarısızlığa iten dil özelliklerinden bahsediyor: bu bir dil özelliği veya dil tasarımının bir parçası olmasa da, arayüzleri uygulamak veya nesneleri kullanmak söz konusu olduğunda aynı derecede geçerli.
Westley uyandığında ve kendini çaresiz bir albino ve uğursuz altı parmaklı Kont Rugen ile Çaresizlik Çukuru'nda kilitli bulduğunda Prenses Gelin'i hatırlıyor musun? Çaresizlik çukurunun temel fikri iki yönlüdür. Birincisi, bir çukur ve bu yüzden içine düşmek kolay ama tırmanmak zor bir iş. İkincisi, umutsuzluğa neden oluyor. Dolayısıyla adı.
Kaynak: C ++ ve Umutsuzluk Çukuru
Bir arayüzün StackOverflowError
varsayılan olarak atanması, geliştiricileri Çaresizlik Çukuru'na iter ve kötü bir fikirdir . Bunun yerine, geliştiricileri Başarı Çukuruna doğru itin . O Make kolay ve doğru JVM çökmesini olmadan arayüzü kullanmak.
Burada yöntemler arasında yetki vermek iyidir. Ancak, bağımlılık bir yoldan gitmelidir. Yöntem delegasyonunu yönlendirilmiş bir grafik gibi düşünmeyi seviyorum . Her yöntem grafikteki bir düğümdür. Bir yöntem başka bir yöntemi her çağırdığında, çağıran yöntemden çağrılan yönteme bir kenar çizin.
Bir grafik çizip döngüsel olduğunu fark ederseniz, bu bir kod kokusudur. Bu, geliştiricileri Çaresizlik Çukuru'na itme potansiyeli. Kategorik olarak yasaklanmaması gerektiğini, yalnızca kişinin dikkatli olması gerektiğini unutmayın . Özyinelemeli algoritmaların çağrı grafiğinde döngüleri olacaktır: bu iyi. Belgeleyin ve geliştiricileri uyarın. Özyinelemeli değilse, bu döngüyü kırmayı deneyin. Yapamıyorsanız, hangi girdilerin yığın taşmasına neden olabileceğini bulun ve bunları azaltın ya da başka bir şey işe yaramazsa son durum olarak belgeleyin.