No enclosing instance of the type A is accessible in scope - Java - Programmation
Marsh Posté le 16-09-2010 à 14:58:48
Pour les explications, cette page explique bien les choses (surtout la dernière partie) : http://download.oracle.com/javase/ [...] ested.html
Le fait que InA ne soit pas static fait que chaque instance de InA doit obligatoire être liée à une instance de A (ce qui est assez logique, vu qu'on peut accéder aux données non statiques de A depuis InA)
Au passage, j'ai appris quelque chose, je ne connaissais pas cette syntaxe (qui doit surement t'aider à résoudre ton problème) :
Code :
|
Marsh Posté le 16-09-2010 à 15:29:24
Oui je connaissais déjà ca, mais je pense que mon problème n'est pas exactement celui la. Je ne cherche pas a instancier une inner class.
Marsh Posté le 16-09-2010 à 15:49:04
Ok, c'est peut-être pas exactement ton problème, mais ça revient quand même plus ou moins à la même chose : ton code qui ne marche pas cherche à construire une instance d'une sous-classe de InA qui n'a pas accès à une instance de A.
Tu dois pouvoir éviter de passer par ta classe qui englobe en utilisant une classe anonyme, un truc du genre :
Code :
|
Mais dans tous les cas, il faut une instance de A quelque part.
EDIT : mais effectivement, Java pourrait te laisser déclarer ta classe MockA comme tu l'as faite et ne râler que si on essaie de l'instancier directement, sans passer par une instance de A. Je vois pas vraiment de raison qui justifie ce comportement.
Marsh Posté le 16-09-2010 à 12:24:54
Bonjour,
Voici une classe avec laquelle je travaille:
Cette classe existait déjà, le seul refactoring que j'ai fait c'est isoler du code dans meth2(), qui était dans meth1(). Au moment ou tout ce code a été écrit, aucun test unitaire n'a été écrit. Je dois donc en faire. Je veux faire un test unitaire sur meth1() et comme je ne peux pas utiliser la méthode meth2() pour les tests unitaires (pas le même comportement), il faut que je la mocke pour lui faire renvoyer ce qui est attendu. Ce qui compte c'est le test de meth1().
Voici une version de ma classe de test qui ne marche pas:
Je ne comprends pas ce No enclosing instance of the type A is accessible in scope (erreur sur super)
Voici comment je contourne le problème:
J'aimerais bien comprendre ce qui se passe... Pourquoi je dois encore rajouter une classe bidon pour englober (Englobe) ?
Merci d'avance pour vos explications.
Message édité par cimourdain le 16-09-2010 à 12:25:53