Usando AsyncTask de esta manera: "new AsyncTask () {" me está dando errores

Estoy siguiendo un tutorial de Android en GCM que utiliza una función llamada "doInBackground" y tienen esta función definida como esta:

private void registerInBackground() { new AsyncTask() { @Override protected String doInBackground(Void... params) { //do stuff } @Override protected void onPostExecute(String msg) { //do stuff } }.execute(null, null, null); } 

Pero cuando coppy y pegar su propio código en eclipse, se queja y dice que no he implementado doInBackground. Esto es porque espera que doInBackground tenga un parámetro de entrada de "Object" y no reconozca el que está definido porque su parámetro de entrada es un void. Ahora, si estaba declarando una tarea asíncrona como una clase, pondría <Void, Void, String> delante de ella, y eso diría al compilador que quiero que mi doInBackground tenga VOID como entrada. Pero cuando pongo <Void, Void, String> delante de "new AsyncTask ()" como tal:

  private void registerInBackground() { new AsyncTask() <Void, Void, String>{ 

Consigo error del compilador:

 Syntax error on tokens, delete these tokens 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.