Есть несколько других вопросов SO, говорящих о генериках, компилирующих компилятор OK w/Eclipse, но не javac (т.е. Java: Generics обрабатывает differenlty в Eclipse и javac и Generics компилируется и запускается в Eclipse, но не компилируется в 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] ^
Почему это происходит, и как я могу обойти эту проблему, чтобы она правильно скомпилировалась?