Parfois, lorsque vous utilisez une réflexion Java ou une opération de stockage spéciale dans Object, vous obtenez des avertissements non contrôlés. Je me suis habitué et quand je ne peux rien y faire, je documente pourquoi un appel n'est pas contrôlé et pourquoi il devrait être considéré comme sûr.Forcer un appel non contrôlé
Mais, pour la première fois, j'ai une erreur sur un appel non contrôlé. Cette fonction:
public <K,V extends SomeClass & SomeOtherClass<K>> void doSomethingWithSomeMap (Map<K,V> map, V data);
Je pense que l'appelant ainsi:
Map someMap = ...;
SomeClass someData = ...;
doSomethingWithSomeMap(someMap, someData);
me donnerait un avertissement d'appel sans contrôle. Jikes fait un avertissement, mais javac me donne une erreur:
Error: <K,V>doSomethingWithSomeMap(java.util.Map<K,V>,V) in SomeClass cannot be applied to (java.util.Map,SomeClass)
Une manière de le forcer à compiler avec un avertissement?
Merci.
Pourquoi pouvez-vous pas faire le paramètre 'Map' générique? Vous avez une méthode générique, donc je ne vois pas pourquoi vous ne pouviez pas aller jusqu'au bout. (Edit: Mais maintenant, je vois que ce n'est pas le point de la question, alors n'hésitez pas à ignorer.) –
En réalité, cette fonction effectue une vérification de type complexe et est très utile dans la plupart des contextes. Mais, dans un cas particulier, j'ai besoin de l'appeler avec quelques résultats d'une opération de réflexion plus tard. La seule solution de contournement que j'ai trouvée pour le moment est de créer une version sûre et non sécurisée de ce doSomethingWithSomeMap et elle est sale ... –
Pouvez-vous poster des signatures SomeClass et SomeOtherClass? –