Supposons que j'ai ce et j'ai p> et aussi peut-être que j'ai p> for(Bike b: movableThings)
4 Réponses :
Vous devez utiliser Cela étant dit, il s'agit probablement d'un cas où vous souhaitez utiliser l'héritage pour permettre que la même méthode soit appelée sur les deux classes de la même manière. p> instance de code>. Vous voudrez peut-être écrire une fonction de filtrage pour la rendre réutilisable. P>
c'est malheureux ... Je ne voulais pas recourir à l'exemple de cause parce que j'ai nié des boucles de pêche ni des ifs imbriqués à l'intérieur de ces boucles de foresach imbriquées la faire boucler assez désordonnée merci pour la confirmation
@Somejavaamateur, Ça vous dérange de poster un peu plus de ce qui serait dans ce // SOMESTUFF code>? Peut-être qu'il y a un meilleur moyen, tout à fait.
La deuxième phrase claque - c'est l'ensemble point i> des deux types mettant en œuvre une interface commune.
Je ne recommanderais pas d'utiliser Utilisez une expédition polymorphe au lieu de instance de code>. L'ensemble du point fort> de deux types de deux types met en œuvre une interface commune est que, lors de l'utilisation de l'interface, le code de consommateur ne devrait pas être concerné par la mise en œuvre spécifique. J'ai tendance à devenir très méfiant lorsque je vois instanceof code> en dehors de égal () code>. instance de code> si vous voulez différent Comportements de différentes implémentations: P> List<Bike> bikes = new ArrayList<Bike>();
// etc...
for (Bike bike : bikes)
{
// do stuff with bikes
}
+1 Oui, bien sûr que vous avez raison. @Some Java Amateur Les méthodes courantes de classes dérivées doivent être placées dans l'interface.
Parce que votre arraylist est défini comme la méthode GET de votre arrayliste retournera un type mobile. Vous devez le jeter manuellement si vous êtes sûr du type d'exécution (utilisez l'instanceOf pour le vérifier). P> for(Movable m: movableThings){
if (m instanceof Car){
Car car = (Car)m;
}
}
C'est une forte odeur de code, cependant. Si vous voulez seulement travailler avec des vélos, ce n'est pas la bonne façon de le faire.
Je pense qu'il utilise une arrayliste
Oui, mon arrayliste de choses mobiles a à la fois des vélos et des voitures, car à un moment donné, j'utilise pour Aach (Movable M: Moviablethings) pour appeler M.Move ()
@Matt Ball: Pourriez-vous m'expliquer une meilleure solution, si ArrayListe
Malheureusement, la arracheliste change continuellement; Les choses sont supprimées et ajoutées tout le temps afin de créer une nouvelle liste, ce n'est pas vraiment une bonne idée, mais merci
@Some est la méthode Move () CODE> définie dans l'interface code> mobile mobile? Sinon, cela devrait être. B>
Il est défini dans l'interface toutefois, parfois, je voudrais peut-être appeler bouger pour seulement des vélos de la liste.
@some qui indique définitivement un problème de conception. Si vous devez pouvoir contrôler les vélos en mouvement séparément des voitures, Utilisez deux listes distinctes. B>
Très bien, laissez-moi clarifier, je pourrais avoir un problème de conception / l'interface mobile inclut également une fonction de tirage et une boucle dans le jeu / parfois, seules certaines choses sont déplacées / mais tout est toujours dessiné / à cause de la double tampon / hm ... Je penserai à utiliser des listes séparées
C'est ici où Google Guava ou une bibliothèque de collection similaire peut être vraiment bénéfique. Vous trouverez des tonnes d'autres utilisations pour cela, ce n'est donc pas une chose difficile à justifier, y compris dans votre projet.
in Guava: p>