Il y a plusieurs autres questions SO qui parlent de génériques compilant OK avec le compilateur Eclipse mais pas javac (c'est-à-dire Java: Generics handled differenlty in Eclipse and javac et Generics compiles and runs in Eclipse, but doesn't compile in javac) - cependant cela ressemble à un peu différent.Erreur javac: types inconvertibles avec génériques?
j'ai une enum
classe:
public class LogEvent {
public enum Type {
// ... values here ...
}
...
}
et j'ai une autre classe avec une méthode qui prend en objets arbitraires de types descendants de Enum
:
@Override public <E extends Enum<E>> void postEvent(
Context context, E code, Object additionalData)
{
if (code instanceof LogEvent.Type)
{
LogEvent.Type scode = (LogEvent.Type)code;
...
Cela fonctionne bien dans Eclipse, mais quand je fais un propre construit avec ant
, je reçois une paire d'erreurs, un sur la ligne instanceof
, l'autre sur la ligne de coulée:
443: inconvertible types
[javac] found : E
[javac] required: mypackage.LogEvent.Type
[javac] if (code instanceof LogEvent.Type)
[javac] ^
445: inconvertible types
[javac] found : E
[javac] required: com.dekaresearch.tools.espdf.LogEvent.Type
[javac] LogEvent.Type scode = (LogEvent.Type)code;
[javac] ^
Pourquoi cela se produit-il, et comment puis-je contourner ce problème pour qu'il se compile correctement?
merci. Pourquoi est-ce moche? C'est simple et a un faible coût d'exécution. –
@Jason S: C'est moche parce que je ne vois pas pourquoi c'est nécessaire. –
Ceci est un bug connu, IIRC. En fait, il y a des douzaines de bugs liés dont aucun n'est encore résolu. – maaartinus