Une " pollution de tas " comme dans les types non réifiables (Tutoriels Java ™> Apprentissage du langage Java> Génériques (mise à jour)) Pourquoi est-ce appelé ainsi?
Méta technique, qui permet de reporter le paramétrage du type fiable au runtime.
Une " pollution de tas " comme dans les types non réifiables (Tutoriels Java ™> Apprentissage du langage Java> Génériques (mise à jour)) Pourquoi est-ce appelé ainsi?
J'ai vu à plusieurs reprises sur ce site des publications qui dénoncent l'implémentation des génériques par Java. Maintenant, je peux honnêtement dire que je n’ai eu aucun problème à les utiliser. Cependant, je n'ai pas tenté de créer moi-même une classe générique. Alors, quels sont vos problèmes...
Dernièrement, j'ai l'habitude de "masquer" les collections Java avec des noms de classes conviviaux. Quelques exemples simples: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } Ou: // If you saw a
En passant en revue du code, j'ai remarqué qu'il était possible de le changer pour qu'il utilise des génériques. Le code (obscurci) ressemble à: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Ce code...
Par exemple, j'ai un jeu qui a quelques outils pour augmenter la capacité du joueur: Tool.h class Tool{ public: std::string name; }; Et quelques outils: Épée.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Bouclier.h class Shield : public Tool{ public:...
Voulez-vous améliorer ce post? Fournissez des réponses détaillées à cette question, y compris des citations et une explication de la raison pour laquelle votre réponse est correcte. Les réponses sans suffisamment de détails peuvent être modifiées ou supprimées. Il est communément admis que les...
Supposons que j'ai deux classes qui ressemblent à ceci (le premier bloc de code et le problème général sont liés à C #): class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } Ces classes ne peuvent en aucun cas être modifiées (elles font partie d'un...
Je ne me souviens pas quand j'ai écrit la classe générique la dernière fois. Chaque fois que je pense que j'en ai besoin après avoir réfléchi, je tire une conclusion que je n'ai pas. La deuxième réponse à cette question m'a fait demander des éclaircissements (puisque je ne peux pas encore...
Je reste dans un environnement où les gens croient: Les génériques Java sont la fonctionnalité exclusivement utilisée pour l'écriture de bibliothèque et non pour le véritable codage. C ++ est un langage de programmation OO; templateest une fonctionnalité optionnelle et évitable Cependant, ces...
AFAIK, mes extendsclasses et implementsinterfaces parentales . Mais je rencontre une situation où je ne peux pas l'utiliser implements SomeInterface. C'est la déclaration d'un type générique. Par exemple: public interface CallsForGrow {...} public class GrowingArrayList <T implements...
Je semble avoir un malentendu sur la différence entre <Foo>et <? extends Foo>. D'après ma compréhension, si nous avions ArrayList<Foo> foos = new ArrayList<>(); Cela indique que des objets de type Foopeuvent être ajoutés à cette liste de tableaux. Comme les sous-classes de...
Dans les génériques C #, nous pouvons déclarer une contrainte pour qu'un paramètre de type Tait un constructeur par défaut, en disant where T : new(). Cependant, aucun autre type de contrainte comme celui-ci n'est valide - new(string)par exemple, etc. Du point de vue de la conception et / ou de la...
Supposons que j'ai cette hiérarchie de classe ... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void eat() { }...
C'est la question du point de vue interne du compilateur. Je m'intéresse aux génériques, pas aux modèles (C ++), j'ai donc marqué la question avec C #. Pas Java, car AFAIK les génériques dans les deux langues diffèrent dans les implémentations. Quand je regarde les langages sans génériques, c'est...
Je suis sûr que tout le monde connaît les méthodes génériques du formulaire: T DoSomething<T>(T item) Cette fonction est également appelée paramétriquement polymorphe (PP), en particulier PP de rang 1 . Disons que cette méthode peut être représentée à l'aide d'un objet fonction de la forme:...
Dans l'état actuel des choses, cette question ne convient pas à notre format de questions / réponses. Nous nous attendons à ce que les réponses soient étayées par des faits, des références ou une expertise, mais cette question suscitera probablement un débat, des arguments, des sondages ou une...
Dans les langages orientés objet qui prennent en charge les paramètres de type génériques (également appelés modèles de classe et polymorphisme paramétrique, bien que chaque nom porte bien sûr des connotations différentes), il est souvent possible de spécifier une contrainte de type sur le...
Selon la règle numéro 4 de Object Calisthenics de Jeff Bay (RTF) dans The ThoughtWorks Anthology, il est recommandé de " Utiliser des collections de première classe ". Règle 4: Collections de première classe L'application de cette règle est simple: toute classe qui contient une collection ne doit...
Dans une autre question StackExchange, j'ai remarqué quelqu'un utilisant ce prototype: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } En gardant à l'esprit qu'il n'y a qu'une seule contrainte de type ( SomeSpecificReferenceType), quelle est la différence et...
Mon type IDE ( NetBeans ) vérifie mon Collectionspendant que je tape du code. Mais alors, pourquoi dois-je lancer l'objet retourné Object.clone()? Ce qui est bien. Pas de mal, pas de faute. Mais je ne comprends toujours pas. La vérification de type, sans transtypage, l'objet retourné...