还有几个其他的SO问题讨论泛型编译好,但是使用Eclipse的编译器而不是javac(即Java: Generics handled differenlty in Eclipse and javac和Generics compiles and runs in Eclipse, but doesn't compile in javac) - 但是这看起来有点不同。javac错误:不可转换类型与泛型?
我有一个enum
类:
public class LogEvent {
public enum Type {
// ... values here ...
}
...
}
,我有另一个类,它接受的类型的任意对象的方法从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;
...
这正常在Eclipse中,但当我用ant
做一次清洁时,我得到一对错误,一个在instanceof
一行,另一个在铸造线上:
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] ^
为什么会发生这种情况,我该如何解决这个问题,以便它能够正确编译?
谢谢。为什么那么丑陋?它很简单,运行成本低。 – 2011-01-28 16:07:20
@Jason S:这很丑,因为我看不出为什么这是必需的。 – 2011-01-28 16:10:40
这是一个已知的错误,IIRC。实际上,有几十个相关的错误,但都没有修正。 – maaartinus 2011-01-31 11:06:11