also ich hab eine Klasse Task mit generics in der die methode excute() gibt
dann habe ich eine unterklasse Open in der ich dann das Generic setze(oder wie das heißt)
also habe ich jetzt eine methode mit excute(File...)
wenn ich jetzt die methode aufrufe in einer anderen methode, parameter task ist ein Object von Open:
bekomm ich eine ClassCastException:
aber ich hab gar keine ahnung wieso. es ist auch egal ob ich die methode mit oder ohne argumenten aufrufe.
und das komisch die zeile 12(oben gekennzeichnet im code) ist die klassendefinition und nicht die methode excute()
Code:
public abstract class Task<E> {
//...
public abstract boolean excute(E... arguments);
//...
}
Code:
public class Open extends Task<File> { // <--- Zeile 12
//...
public boolean excute(File... openFile) {
//...
}
//...
}
wenn ich jetzt die methode aufrufe in einer anderen methode, parameter task ist ein Object von Open:
Code:
public void excuteTaskInBackground(final Task task, final Object... arguments) {
//aufruf von excute
if (pTask.excute())
//oder so, fehler kommt bei beiden versionen
if(pTask.excute(arguments))
}
Code:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at icqhistoryviewer.tasks.Open.excute(Open.java:12)
at icqhistoryviewer.tasks.TaskManager.excuteTaskInBackground(TaskManager.java:143)
at icqhistoryviewer.tasks.TaskManager.excuteTaskInBackground(TaskManager.java:129)
at icqhistoryviewer.JICQHistoryViewer.main(JICQHistoryViewer.java:67)
und das komisch die zeile 12(oben gekennzeichnet im code) ist die klassendefinition und nicht die methode excute()