[Java] Error 41 Method Required, value found.

Pagina: 1
Acties:

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 07-09 20:51
Ik heb een constructor die werkt met overerving. Bijvoorbeeld een classe Uitleenbaar, de subklassen zijn boek en tijdschrift. Het boek haalt zijn o.a. isbn uit Artikel en het tijdschrift ook. Dat doe ik door middel van:
code:
1
2
3
4
5
6
7
8
//subklasse boek
public Boek(int bc, int ad, Artikel artikel, String ar, String is, String g)
  {
    [b]super (bc, ad, artikel);[/b]
    auteur = ar;
    isbn = is;
    genre = g;
  }

JBuilder geeft de error bij de super funtie. De constructor van de bovenliggende class Artikel ziet er zo uit:
code:
1
2
3
4
5
6
public Uitleenbaar(int bc, int ad, Artikel artikel)
{
    boekCode = bc;
    aanschafDatum = ad;
    artikel = artikel;
}

De superfunctie geeft als object een Artikel mee. Op een nog hoger niveau als uitleenbaar. Het probleem is de error Error 41 Method Required, value found. Kan een object niet worden doorgegeven door middel van een super?
Ik maak gebruik van JBuilder die een help heeft :r Daar heb ik niks kunnen vinden ook op de website van JBuilder gezocht..Google GOT- search nopes niets |:(

http://hawvie.deviantart.com/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik vind dit ook een beetje vaag, maar laat ik eerst even antwoord op je vraag geven:
je kan perfect argumenten mee geven aan een super :) (het zou wat zijn als het niet kon)

maar die foutmelding is echt raar: Error 41 Method Required
deze ken ik niet van Sun. (JBuilder gebruikt gewoon JDK van Sun). Anders moet je ff kijken op de search van Sun:
http://search.java.sun.com/Search/java
Dit is eigelijk de eerste plek waar ik ga zoeken als er problemen zijn. Een meestal vind ik wel iets. Als je gaat zoeken zorg dan wel even dat je 'Java Discussion Forums' even aanvinkt, want dan krijg je berichten te zien van je mede proggenoten.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

nog een paar kleine tips:
-probeer niet zulke cryptische namen te gebruiken als is, g, bc en ad. Als je straks weer naar je code kijkt dan kun je niet in 1 oogopslag zien wat je bedoelt.
-het is verstandig als je je argumenten even gaat checken, want ik neem aan dat je een is=null niet zo leuk vind :)

dus even:
code:
1
2
3
4
5
6
7
8
9
public Boek(int bc, int ad, Artikel artikel, String ar, String is, String g)
  {
    super (bc, ad, artikel);
    
    if(auteur == null){
     throw new NullPointerException("auteur can`t be null");
    }
    auteur = ar; 
  }

-En wat ik gebruik om member variablen te onderscheiden van lokale variablen is een prefix. bv een m_ of een _

dus dan krijg je:
m_auteur = auteur;

Dit werkt echt supermakkelijk omdat je meteen kan zien wat voor soort variable je te pakken hebt.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Op vrijdag 22 maart 2002 14:41 schreef Alarmnummer het volgende:
Ik vind dit ook een beetje vaag, maar laat ik eerst even antwoord op je vraag geven:
je kan perfect argumenten mee geven aan een super :) (het zou wat zijn als het niet kon)

maar die foutmelding is echt raar: Error 41 Method Required
deze ken ik niet van Sun. (JBuilder gebruikt gewoon JDK van Sun). Anders moet je ff kijken op de search van Sun:
http://search.java.sun.com/Search/java
Dit is eigelijk de eerste plek waar ik ga zoeken als er problemen zijn. Een meestal vind ik wel iets. Als je gaat zoeken zorg dan wel even dat je 'Java Discussion Forums' even aanvinkt, want dan krijg je berichten te zien van je mede proggenoten.
Zeker weten :? Het kan ook zijn dat jikes wordt gebruikt :)

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

uit de text maak ik op dat het zoiets is
class Boek extends Uitleenbaar ....

maar ik vind die error wel raar,
want wat je doet is wel goed.
Ik ken die error wel, maar ik krijg hem dan als ik bijvoorbeeld later pas een super aanroep
voorbeeld:
code:
1
2
3
4
public Boek(int bc, int ad, Artikel artikel, String ar, String is, String g)  {
    auteur = ar;
    super (bc, ad, artikel); //geeft error
  }

Daar ken ik die error van, maar aangezien je eerst super aanroept.......
heb ik geen idee waardoor het komt

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op vrijdag 22 maart 2002 15:01 schreef MisterData het volgende:

[..]

Zeker weten :? Het kan ook zijn dat jikes wordt gebruikt :)
Ik heb nog niemand gehoord over de combi jikes en jbuilder, dus vandaar.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op vrijdag 22 maart 2002 15:05 schreef nxt het volgende:
uit de text maak ik op dat het zoiets is
class Boek extends Uitleenbaar ....

maar ik vind die error wel raar,
want wat je doet is wel goed.
Ik ken die error wel, maar ik krijg hem dan als ik bijvoorbeeld later pas een super aanroep
voorbeeld:
code:
1
2
3
4
public Boek(int bc, int ad, Artikel artikel, String ar, String is, String g)  {
    auteur = ar;
    super (bc, ad, artikel); //geeft error
  }

Daar ken ik die error van, maar aangezien je eerst super aanroept.......
heb ik geen idee waardoor het komt
Krijg je ook een regel nr erbij?

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

Krijg je ook een regel nr erbij
nee, want ik heb het niet getest;) maar weet het uit ervaring
JBuilder (en dus JDK denk ik?) wil geen call naar super() als deze niet op de eerste regel in de constructor staat.
(tenminste in de situaties waarin het bij mij voorkwam)

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 07-09 20:51
Is het ook mogelijk dat de error hierdoor komt?:
Boek boek = new Boek(1234, 456, artikel, "Prenten","ISBN", "kinderboeken");
artikel is een object dat al eerder is aangemaakt. Door middel van de super in de class word het artikel gekoppeld aan het boek.. Ik heb het vermoeden dat de fout daar zit. Ik zat aldoor te kijken bij de super. Omdat hij daar naar verwezen word. Maar zou het hier aan kunnen liggen?

Alarmnummer bedankt voor je M_tips :*

http://hawvie.deviantart.com/


  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

Op vrijdag 22 maart 2002 15:32 schreef Alarmnummer het volgende:

[..]

Krijg je ook een regel nr erbij?
ik heb het nog eens even getest,
en het regelnummer dat ie geeft is waar super() staat.

alleen bij mij JBuilder 6 Enteprise met JDK 1.3.1 is de error: "Error 361: Mehtod Required, value found"

en de JBuilder help zegt over Error 361:
361 - 'identifier kind' required, but 'identifier kind' found
The given kind of identifier is required, but another kind was found.
edit: maar voor alle duidelijkheid (voordat we het straks over mij gaan hebben ipv de topicstarter) ik heb verder nergens last van.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Wild guess: De compiler zegt dat ie een methode verwacht, maar dat niet vindt. Probeer eens de spatie na super weg te halen?

Het zal wel niet, maar je weet maar nooit :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 05:49

[code]public Boek(int bc, int ad, Artikel artikel, String ar, String is, String g) {
auteur = ar;
super (bc, ad, artikel); //geeft error
}[/code]
Dit mag (helaas) niet... je moet EERST de parent constructor aanroepen en daarna pas extra code.


* Jelmer Barhorst moet eens leren lezen... |:(

Heb je trouwens al geprobeerd om met de hand te compilen??(dus javac vanuit een shell te starten)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op vrijdag 22 maart 2002 15:54 schreef Janoz het volgende:
Wild guess: De compiler zegt dat ie een methode verwacht, maar dat niet vindt. Probeer eens de spatie na super weg te halen?

Het zal wel niet, maar je weet maar nooit :)
Ik heb het net gechecked maar het maakt niet uit :) Ik zou het ook uitermate vreemd vinden als dit zo was.

Verwijderd

als je die super aanroep weghaalt dan compileert ie het dus wel?? (moet je waarschijnlijk nog wel even een constructor zonder argumenten maken voor klasse Uitleenbaar)

wild guess: Ben je niet toevallig een Boek extends Uitleenbaar vergeten??? Als dat niet zo is verwacht ik eigenlijk een andere error, maar goed, je weet maar nooit...

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 07-09 20:51
code:
1
2
Boek boek = new Boek(1234, 456, artikel = new Artikel(bla,bla,bla), "Prenten",
"ISBN", "kinderboeken");

Hoe vreemd het ook klinkt en hoe vreemd ik het ook vind zo was het probleem opgelost :? :? Bij het aanmaken van een nieuw boek moest artikel pas aangemaakt worden. Maar waarom die foutmelding nou gegeven word bij super kan ik niet volgen. Dus is het opgelost :) :)

Er worden nog wel een aantal errors gemaakt, maar dat ligt ergens anders aan. :P

http://hawvie.deviantart.com/

Pagina: 1