Pas besoin de jeter le résultat de findViewById?
Récemment, j'ai trouvé que AndroidStudio me rappelle pour enlever un peu de classe en fonte. Je me souviens que dans l'ancien temps, nous devons convertir le résultat de findViewById, mais maintenant, il n'est pas nécessaire.
Le résultat de findViewById est toujours en Vue, donc je veux savoir pourquoi nous n'avons pas besoin de jeter la classe?
Je ne trouve pas de documents de mentionner que, n'importe qui peut trouver n'importe quel document?
- parce que maintenant c'est
<T extends View> T findViewById(int id)
? - vous avez besoin de la coulée dans le cas de toute opération qui n'est pas là en Vue de classe ,comme dans le cas de l'ImageView ,Si vous souhaitez utiliser setImageResource,alors vous avez besoin de jeter findViewById avec ImageView
- Mais je me sens un peu gênant de savoir le type de variable en un seul coup d'œil si enlevé le "redondant" coulée.
Vous devez vous connecter pour publier un commentaire.
De départ avec l'API 26,
findViewById
utilise l'inférence pour son type de retour, afin de ne plus avoir à jeter.Ancienne définition:
Nouvelle définition:
Donc, si votre
compileSdk
est d'au moins 26, cela signifie que vous pouvez utiliser ceci 🙂ClassCastException
.Selon cette l'article:
Dans les anciennes versions:
À partir d'Android Studio 3.0 avec SDK 26:
Android Studio rappelle afin de les supprimer de la coulée, si vous utilisez des attributs communs de Vue classe, comme visibilité ou des méthodes communes, comme onClick()
Par exemple:
Dans ce cas, vous pouvez simplement écrire:
Android 0, nettoyer casting
L'une des choses que google annoncer IO 2017 est quelque chose qui est appelé "cast away":). Développeur Android n'avez pas à faire un manuel de casting pour findViewById(). Par exemple, à l'ancienne manière à obtenir un texte à afficher à l'aide de findViewById() serait quelque chose comme cela.
Alors que le nouveau mode serait comme cette
C'est un simple changement. Mais pour un programmeur expérimenté, un code propre, comme cela peut vous rendre très heureux, et il aide avec votre code d'humeur 🙂
Pour être capable de faire cela, vous seulement besoin de définir votre projet compilé version du sdk de la version 26 dans votre application construire.gradle.
Vous pouvez toujours cible précédente version du sdk, donc c'est un non-intrusive des changements.
Maintenant, le vrai problème, comment nettoyer ce vieux code qui utilise casting tout ce temps. Surtout quand vous avez, comme des centaines d'activité des fichiers. Vous pouvez le faire manuellement, ou peut-être a recruté un stagiaire pour faire . Mais heureusement pour tous ceux stagiaire, android studio est déjà prêt à nous aider.
Lorsque vous placez votre curseur (ou cliquez sur le redondante casting) android studio proposera 2 option pour la gestion des licenciés de la coulée.
Tout d'abord, elle suggère de supprimer l'redondant cast ou vous pouvez choisir de nettoyer le code. Il va supprimer tous les licenciés de voter pour ce fichier. C'est mieux, mais nous voulons plus. Nous ne voulons pas ouvrir chaque fichier et le faire nettoyer un par un.
L'une des choses qui font de IntelliJ idea Spécial, c'est qu'une fonction qui est appelée à l'intention de l'action. Tout ce que vous avez à faire est d'appuyer sur ctrl+maj+A, puis tapez clean. Et sélectionnez ménage dans le Code de l'action, et sélectionnez l'ensemble de la portée du projet. Avec ces quelques étapes simples, votre code sera beaucoup plus propre.
Un point important est que vous faites cela avec un peu de code système de gestion de versions. De cette façon, vous pouvez comparer les changements faits par l'intention de l'action et de revenir tous les fichiers que vous voulez.
Copié à partir de l'original post:
https://medium.com/@abangkis/android-0-clean-up-casting-c30acec56cef