getClass() dans la classe abstraite donne Ambigu appel de la méthode
J'ai un public abstract class et je suis en train d'utiliser le getClass()
méthode, que j'ai besoin d'info à partir de la classe de prolonger ma classe abstraite. Un exemple est la suivante:
public String getName() {
return getClass().getSimpleName();
}
Cependant, IntelliJ des rapports de cette:
Ambiguous method call. Both
getClass () in Object and
getClass () in Object match.
Le code fonctionne très bien, mais avoir des dizaines d'avertissements d'erreur dans mon IDE est un peu à ma façon. Il perturbe mon flux de travail avec beaucoup de faux positifs.
Pourquoi sont ces erreurs qui s'affichent, et que puis-je faire pour ne pas les voir?
- ressemble à un bug dans IntelliJ
- Appelez-moi démodé, mais je ne vois pas pourquoi vous auriez besoin de connaître la classe de béton. Méthodes virtuelles devrait faire le travail.
- Idéalement, oui. Comme je l'ai dit, mon exemple peut facilement être modifié. Mais pas tous mes méthodes ont facile homologues. Ce n'est pas la question, de toute façon.
- après votre commentaire, j'ai googlé autour. Il est en fait un bug dans l'Ide. youtrack.jetbrains.com/issue/IDEA-71363 et youtrack.jetbrains.com/issue/IDEA-79680 et j'ai aussi trouvé un peu plus.
- Incorrect, selon le plus récent à partir du lien fourni par l'OP ci-dessous.
- Vous pouvez fournir une réponse si vous pensez que vous savez le mieux..
- Ici est le Android Studio de rapport de bug.
Vous devez vous connecter pour publier un commentaire.
Casting mon
getClass()
appel àObject
comme cerésout le problème (avec les classes abstraites) pour moi.
Ce n'est pas grand, mais il travaille.
Aussi, la manipulation de votre Android Sdk partir des paramètres de projet et la suppression de tous les JDK pots à partir de votre Android SDK permet de résoudre l'erreur. Bien sûr, vous aurez pour y faire référence dans votre projet pour utiliser le correctif.
Le code est bien, mais c'est une erreur dans l'Ide.
Rapport d'erreur,
un autre.
Il y en a même plus d'erreur rapports avec les différentes variantes de ce problème. Comme duffymo souligné dans les commentaires, il peut aussi être parce qu'il ya différentes versions du JDK dans le classpath.
Un autre travail solution de contournement consiste à générer une méthode d'assistance pour obtenir la Classe:
ou statique réutilisables util:
J'ai remarqué que cela dépend de la version d'Android que vous référencez si l'erreur se produit ou pas. J'ai utilisé pour définir une dépendance pour Android 4.1.1.4 dans le
pom.xml
reliant à Maven Central.En attendant, je vous présente les dépendances nécessaires à l'aide de maven-android-sdk-deployer.
Puis
getClass()
produit l'erreur.Cela peut se produire si vous avez un projet Android avec Maven, et que vous importez dans l'Ide, à l'aide de la
Maven Android Platform
que le projet SDK. Le problème est que les deuxMaven Android Platform
et Android maven dependency jar comprend lajava.lang.Object
classe.La solution de contournement est goint à structure de Projet -> Paramètres de Plate-forme -> SDK -> Maven Android Plate-forme -> Classpath. C'est la liste de tous les pots qui sont dans le JDK en fait. Supprimer tous d'entre eux, alors que les deux Android dépendance reste (
res
etannotations.jar
).MODIFIER: Ce problème a été déjà signalé à IntelliJ issue tracker il y a longtemps.