Articles of générique

Quelqu’un peut-il expliquer la déclaration de ces méthodes génériques Java?

Je lis “Génériques dans le langage de programmation Java” de Gilad Bracha et je suis confus au sujet d’un style de déclaration. Le code suivant se trouve à la page 8: interface Collection { public boolean containsAll(Collection c); public boolean addAll(Collection c); } interface Collection { public boolean containsAll(Collection c); public boolean addAll(Collection c); // […]

Génériques Java et inheritance

J’ai les classes abstraites suivantes: public abstract class AbSuperClass1 { //class definition } et: public abstract class AbSuperClass2 { public abstract <Q extends AbSuperClass1> void method(Q arg); … } J’ai alors deux implémentations concrètes public class Concrete1 extends AbSuperClass{ //class definition } et: public class Concrete2 extends AbSuperClass2{ public void method(Concrete1 arg){ //method definition } […]

Utilisation pratique de la signature Collections.max ()

Cette question fait suite à la signature Explanation of Collections.max() , dans laquelle la réponse acceptée ne plonge pas dans la raison pratique de ce caractère générique. La méthode max prend une Collection Collection et je suis incapable de penser à un cas pratique où cette wildcard aide. J’ai même fait référence à Oracle More […]

Constructeur générique Java

Supposons que j’ai besoin de DerivedBuilder pour étendre certains BaseBuilder . Le générateur de base a une méthode comme foo (qui renvoie BaseBuilder ). Le constructeur dérivé a une bar méthode. La bar méthode doit être invoquée après la méthode foo . Pour ce faire, je peux remplacer la méthode foo dans DerivedBuilder comme ceci: […]

Casting Java & Kotlin avec des génériques. Perte de typesafety

Lors du codage en Kotlin / Java, je suis tombé sur quelque chose d’assez étrange lors de l’utilisation du casting et des génériques. Il semble possible de faire croire au système de types qu’une liste est du type List , alors qu’il s’agit en fait d’un List . Quelqu’un peut-il m’expliquer pourquoi c’est possible? Voici […]

Comment créer un object de type Java à l’exécution à partir d’une définition de type générique et de parameters de type d’exécution?

En supposant une déclaration de type générique (Java) class Foo { public T bar; } comment puis-je, lors de l’exécution, instancier un object Type représentant Foo paramétré sur un type spécifique T (également connu uniquement lors de l’exécution)?

Convertir de la classe en TypeReference

Fondamentalement, tout le contraire de cette question . Je veux convertir un object Class en un object TypeReference . J’ai essayé: foo(Class valueType) { TypeReference ref = new TypeReference(){}; } mais cela retourne simplement une référence de type de la super classe des classes. J’ai aussi essayé: foo(Class valueType) { TypeReference ref = new TypeReference(){}; […]

Spécification d’un type générique en java à partir d’un object de classe

Pourquoi c’est faux: Class type = Integer.class; ArrayList = new ArrayList(); ? N’y a-t-il aucun moyen d’instancier une classe d’un type spécifique à partir d’un object de classe? Évidemment, je ne ferais jamais cela directement, c’est juste un exemple pour montrer ce qui est nécessaire. Dans le code actuel, j’ai besoin de je ne sais […]

Comment obtenir le type générique au moment de l’exécution?

Voici mon code: ExecutorImp étend AbstractExecutor qui extrait les mêmes logiques d’exécution de ses implémenteurs (ExecutorImp est un cas), lorsqu’il appelle la méthode execute () de ExecutorImp, il appelle la méthode dans son supertype, mais le supertype ) devrait connaître une autre classe liant l’implémenteur (dans l’exemple, il s’agit de la classe User): import java.lang.reflect.InvocationTargetException; […]

Impossible d’utiliser le type nested non spécifique avec des génériques

J’ai deux classes avec des génériques nesteds. Y at-il un moyen de se débarrasser de la Incompatibilité de type: impossible de convertir Msg<Value> en Msg<Value> erreur? Dans la dernière mission public class Value { V val; public Value(V val) { this.val = val; } @Override public Ssortingng toSsortingng() { return “” + val; } } […]