9
votes

Comment obtenir une classe littérale d'une classe générique spécifique

Il existe des méthodes telles que celles-ci qui nécessitent des littéraux de classe comme argument. xxx pré>

ou p> xxx pré>

Le problème se présente quand j'ai besoin de Fournir des classes spécifiques génériques telles que P>

EmpInfo<String>
Razmataz<Integer>


0 commentaires

3 Réponses :


3
votes

Vous ne pouvez pas.

Utilisez un casting dangereux: xxx


0 commentaires

7
votes

Citation de Java Generics and Collections , Section 7.2:

Les littéraux de classe sont également restreints; Il n'est même pas valide syntaxiquement de fournir un paramètre de type au type d'une classe littérale. Ainsi, le fragment suivant est illégal: xxx

En effet, la grammaire de Java fait une phrase telle que la précédente difficile à analyser, et peut déclencher une cascade d'erreurs de syntaxe [...]

Ce problème de syntaxe conduit à une irrégularité. Partout ailleurs qu'un type réifiable est requis, vous pouvez fournir un type brut (tel que la liste ) ou un type paramétré avec des caractères génériques sans bornes (telles que la liste ) . Cependant, pour les jetons de classe, vous devez fournir un type brut; Même les caractères génériques non liés ne peuvent pas apparaître. Remplacement de la liste avec la liste dans le code précédent conduit à une cascade d'erreur similaire.

Donc, vous n'avez aucun choix, mais utilisez uniquement des types bruts dans les jetons de classe, comme xxx


0 commentaires

3
votes

Quelqu'un a laissé une réponse courte mais concise ici, que j'étais sur le point de choisir comme réponse. Malheureusement, cette personne a supprimé cette réponse. Si cette personne serait si gentille de ré-poster cette réponse pour moi de choisir. En attendant, laissez-moi indiquer cette réponse et comment je l'ai fait usage.

C'est ce que j'aurais dû penser à ,


xxx

Basing sur la réponse qui a été supprimé,

J'aurais une paire d'interface de base Razmataz de base, ce qui fait beaucoup de choses que je suis trop paresseux pour répéter. xxx

Le concept ne doit pas instantifier la poignée RazmatazasynCrpc à la classe de base mais à la classe dérivée.

pour t = string xxx

Sinon, je devrais répéter ~ 100 lignes de code, ~ 50 chacune pour Razmataz et Razmatazasync, sur différentes valeurs paramétriques de chaîne, carte, booléen, entier, etc.

la base Le principe de surmonter de cette obstacle était - je suis paresseux de répéter ces lignes.


0 commentaires