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