Casting de Bouton est redondant - Pourquoi?

Je viens de tombé sur ce message intéressant de le compilateur et je ne sais pas pourquoi cela se produit. Ici c'est le cas

Exemple 1.

Button test = (Button) findViewById(R.id.someButtonId);
test.setOnClickListener(this);

Exemple 2.

findViewById(R.id.someButtonId).setOnClickListener(this);

Dans le premier exemple, j'ai besoin de jeter un objet retourné par findViewById à Button. Dans le deuxième exemple, je n'ai pas de cast de l'objet retourné parce que je n'ai pas utiliser un autre Button objet de classe. Si j'essaie de le lancer via

((Button)findViewById(R.id.someButtonId)).setOnClickListener(this);

Je vais avoir l'avertissement Casting findViewById(R.id.someButtonId) to Button is redundant.

Pourquoi est-ce arrivé? Je n'essaie pas de les supprimer en fonte d'avertissement. Je veux connaître la logique qui sous-tend cette et pourquoi casting n'est pas nécessaire si je ne cherche pas à initialiser un autre objet avec l'objet renvoyé par findViewById.

stackoverflow.com/questions/3502690/...
Je sais comment l'enlever :). Je n'ai pas besoin de ça. Je demande pourquoi casting n'est pas nécessaire.
🙁 je ne suis pas aller de l'avertissement
Utilisation IntelliJ IDEA et vous. Le meilleur outil! 😉
:O je suis à l'aide d'Eclipse, merci quand même

OriginalL'auteur sandalone | 2012-03-01