Can't override process() method in SwingWorker

event-dispatch-thread, java, multithreading, swing, swingworker

Solution

The SwingWorker class is defined as follows:

public class SwingWorker<T, V> {
    ...
    protected void process(List<V> chunks) {
        ...
    }
}

So, since your subclass is declared as

class RemotePlayersWorker extends SwingWorker<String[][], Object> {

The process method should take a `List<Object>` as argument, and not a `List<String[][]>`

Problem

I have a SwingWorker class as follows: ``` class RemotePlayersWorker extends SwingWorker<String[][], Object> { PlayerCanvas parent; RemoteHandler remote; String[][] players; int maximumConnections; public RemotePlayersWorker(PlayerCanvas parentCanvas, RemoteHandler remoteHandle) { this.parent = parentCanvas; this.remote = remoteHandle; } @Override protected String[][] doInBackground() throws Exception { System.out.println("TEST 1"); players = remote.getConnectedPlayers(); publish(players); return players; } @Override protected void process(List<String[][]> chunks) { for (String[][] chunk : chunks) { // no need for the c variable System.out.println(chunk.toString()); } } @Override protected void done() { } } ``` However, I'm getting errors when overriding the process(List chunks) method. Eclipse tells me this: ``` The method process(List) of type PlayerHandler.RemotePlayersWorker must override or implement a supertype method ``` However, as far as I can tell, I am overriding the method correctly - I get the same error regardless of what I set the list type to. Is there any other reason I wouldn't be able to override process()? I'm using java version "1.7.0_10" - Java(TM) SE Runtime Environment (build 1.7.0_10-b18)

Original source