74 votes

Bug du compilateur eclipse ou javac (type « paramètres de T ne peut pas être déterminées »)

Le code suivant

compile dans eclipse, mais pas avec javac (paramètres de type de T ne peut pas être déterminées ; aucune instance maximale unique n’existe pour la variable de type T avec les limites supérieures T,java.lang.Object).

Lorsque je change de readObject(String file) à

Il compile dans eclipse et avec javac. Qui est correct, le compilateur eclipse ou javac ?

66voto

Fabian Steeg Points 24261

Je dirais que c’est le bogue dans le compilateur de Sun a signalé ici et ici, parce que si vous changez votre ligne à celle ci-dessous, cela fonctionne à la fois, qui semble être exactement ce qui est décrit dans les rapports de bogue.

13voto

Chris Jester-Young Points 102876

Dans ce cas, je dirais que votre code est mal (et le soleil compilateur est juste). Il n’y a rien dans vos arguments d’entrée à pour en déduire le type . Dans ce cas, vous êtes mieux de le laisser retourner l’objet et laissez les clients à monter manuellement le type de résultat.

Cela devrait fonctionner (bien que je n’ai pas testé) :

3voto

m.genova Points 356

U22 JDK6 Oracle doit être correct, mais j’ai ce problème avec JDK6 u24 trop

Il s’agit d’un bug d’éclipse bug 98379.

Cela n’était pas corrigé, mais le problème est résolu par l’intermédiaire de contournement comme exemple dans bugs eclipse (voir lien)

0voto

OndrejM Points 81

Si vous ne pouvez modifier votre readObject méthode à travailler de manière transparente lorsqu’elle est appelée, vous pouvez aussi utiliser qui suit :

De cette façon, l’appelant est obligé de spécifier le type du résultat et compilateur sait comment effectuer un cast du résultat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X