さて、getFavoriteAnimal() 関数内の変数 animal は、何の型としてコンパイルされるべきでしょう?
こういう場合はおっしゃる通りわからないと思うので、コンパイラさんは「わかんないー」って言えばいいんじゃないでしょうか。
んで、仕方がないから、ちゃんと宣言して使うと。
弾さんの元記事のは型推論オンリーじゃなくて、できるときに楽ちんぐらいのもんだと私は思ってました。
どちらにせよ、変数 animal は事前に型宣言が必要になってしまいます。
だから、これはその通りですが、型推論あったら便利でいいじゃん!ということなんじゃないかなぁと。
というのも、キャストしてやれば問題ないような。
でも、これ見るとそんな風に思ってるようには見えませんね。(これは私の発言)
追記
あげてもらった上の例でも不整合がでたらスーパークラスを試すという方法もありじゃないかな、と思ったり。