Có một số câu hỏi SO khác nói về generics biên dịch OK w/trình biên dịch của Eclipse nhưng không phải javac (tức là Java: Generics handled differenlty in Eclipse and javac và Generics compiles and runs in Eclipse, but doesn't compile in javac) - tuy nhiên điều này có vẻ hơi khác một chút.lỗi javac: các loại không thể thay đổi với generics?
Tôi có một lớp enum
:
public class LogEvent {
public enum Type {
// ... values here ...
}
...
}
và tôi có một lớp học với một phương pháp mà mất trong đối tượng tùy tiện của các loại có nguồn gốc từ 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;
...
này hoạt động tốt trong Eclipse, nhưng khi tôi làm sạch được xây dựng với ant
, tôi gặp phải một số lỗi, một lỗi trên đường dây instanceof
, số còn lại trên đường truyền:
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] ^
Tại sao điều này xảy ra và làm cách nào tôi có thể khắc phục vấn đề này để nó có thể biên dịch đúng cách?
cảm ơn. Tại sao điều đó xấu xí? Nó đơn giản và có chi phí thời gian chạy thấp. –
@ Jason S: Thật xấu vì tôi không thể thấy lý do tại sao nó được yêu cầu. –
Đây là lỗi đã biết, IIRC. Trên thực tế, có hàng tá lỗi liên quan mà không có lỗi nào trong số chúng được khắc phục. – maaartinus