Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[java] Thread geeft problemen

Pagina: 1
Acties:

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 13-11 10:23
Ik heb een interface Taak en een klasse LeukeTaak. Van de klasse LeukeTaak wil ik een thread maken, alleen geeft dat een error. De code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public interface Taak {
  void stopTask();
}

public class LeukeTaak implements Runnable, Taak {
  public void stopTask () {
  }
  public void run () {
  }
}

// Dit staat in me hoofdprogramma:
Taak taak;
Thread taakThread;

taak = new LeukeTaak();
taakThread = new Thread(taak); // <- deze regel geeft de error
taakThread.start();

De error zegt: cannot find symbol, Thread(taak)

Heeft er iemand tips?

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 17-11 22:11

Nick_S

++?????++ Out of Cheese Error

In het kort, je Taak is geen Runnable.

Hint: dit gaat wel werken:

Java:
1
2
3
4
5
6
LeukeTaak taak;
Thread taakThread;

taak = new LeukeTaak();
taakThread = new Thread(taak); // <- deze regel geeft de error
taakThread.start();

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

Een interface is abstract. Die kan je alleen implementeren door die class te maken. Vandaar dat je hem ook niet kan creeëren met "Taak taak" maar wel met "LeukeTaak taak".

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Je kan beste een instantie van 'LeukeTaak' aan de variabele 'taak' toekennen, maar als jij de compiler vertelt dat het type van taak 'Taak' is, dan informeert hij je vriendelijk dat er geen constructor van Thread bestaat die een instantie van 'Taak' lust.
webfreakz.nl schreef op woensdag 09 april 2008 @ 21:01:
Een interface is abstract. Die kan je alleen implementeren door die class te maken. Vandaar dat je hem ook niet kan creeëren met "Taak taak" maar wel met "LeukeTaak taak".
Waar heb jij het over?
Java:
1
Taak taak = new LeukeTaak();

gaat prima werken hoor.

[ Voor 42% gewijzigd door Confusion op 09-04-2008 21:03 ]

Wie trösten wir uns, die Mörder aller Mörder?


Verwijderd

Of je plant er een RunnableTaak tussen:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
interface Taak{
  void stopTask();
}

interface RunnableTaak extends Taak, Runnable{

}

class LeukeTaak1 implements RunnableTaak{
  //some methods implemented


}


Wellicht dat dat beter uitkomt met je ontwerp. RunnableTaak heeft dan ook de Runnable interface en kan dus aan een Thread meegegeven worden.

Zoals eerder gezegd, instance Taak heeft geen enkele weet van Runnable af.

  • YopY
  • Registratie: September 2003
  • Laatst online: 06-11 13:47
code:
1
2
3
public interface Taak extends Runnable { 
  void stopTask(); 
}


code:
1
2
3
4
5
6
public class LeukeTaak implements Taak { 
  public void stopTask () { 
  } 
  public void run () { 
  } 
}


Hiermee wordt de Taak interface een uitbreiding op de Runnable interface, oftewel je Taak wordt Runnable. De LeukeTaak implementeert vervolgens Taak, en omdat Taak Runnable extendt, implementeert LeukeTaak ook gelijk Runnable.

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 13-11 10:23
Verwijderd schreef op donderdag 10 april 2008 @ 09:04:
Of je plant er een RunnableTaak tussen:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
interface Taak{
  void stopTask();
}

interface RunnableTaak extends Taak, Runnable{

}

class LeukeTaak1 implements RunnableTaak{
  //some methods implemented


}


Wellicht dat dat beter uitkomt met je ontwerp. RunnableTaak heeft dan ook de Runnable interface en kan dus aan een Thread meegegeven worden.

Zoals eerder gezegd, instance Taak heeft geen enkele weet van Runnable af.
Dit komt inderdaad beter uit in me ontwerp. En het werkt ook nog ;)
Pagina: 1