/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Cannot be referenced from a static context~
Fra : Ukendt


Dato : 19-10-04 20:57

Jeg har et problem i forbindelse med at hive et objekt ud fra en arraylist i
en klasse og overføre det til en anden klasse. Fejlen jeg får er "non-static
method PushKort() cannot be referenced from a static context".

Koden ser nogenlunde således ud (det uinteressante er skåret væk):

Klassen KortStak:
---
public class KortStak

public Object kortelement;

public KortStak()
{
kortstak = new ArrayList();
}

(...)

public Object PushKort()
{
int i = kortstak.size();
if (i == 0)
{System.out.println("FEJL! Ingen kort i stakken!");
}
kortelement = kortstak.get(0);
kortstak.remove(0);
return kortelement;
}

Klassen Haand:
---
i=0;
x=4;

public void genererHand()
{
while(i < x){
String tekst = KortStak.PushKort();
haandlist.add(tekst);
i++;
}

Nogle der kan give et bud på fejlen og hvordan den rettes?



 
 
Peter Kjellerup Rasm~ (19-10-2004)
Kommentar
Fra : Peter Kjellerup Rasm~


Dato : 19-10-04 21:29

Det der er dit problem er at du ikke har skelnet mellem objekter og
klasser. Objekter at instansieringer af klasserne eller sagt på en anden
måde er dine objekter de dynamiske udgaver af dine klasser.
Det du har brug for er en instansiering af kortStak klassen som i:
KortStak ks = new kortStak();
for så kan du nemlig kalde ks.PushKort() og få et Objekt tilbage fra det
kald.

En anden lille kommentar er at det er normalt at bruge stort begyndelses
bogstav til klasse navne men lille begyndelsesbogstav til metodenavne,
men det er jo en detalje ;)

En tredie lille kommentar er at du måske kunne overveje om ikke dine
kortelementer kunne representeres bedre. Enten hvis du kunne tænkes at
få brug for noget mere info end .toString() metodens returværdi så kunne
du lave en lille klasse til disse som du så bruger i ArrayListen.
Alternativt kunne du vel blot bruge en liste med 52 stringe istedet for
et array. Noget i stil med String[] kortstak = new String[52]; eller
String[] kortstak = {"Hjerter et", "Hjerter to", ....}

mvh
Peter



<-= KG =-> wrote:
> Jeg har et problem i forbindelse med at hive et objekt ud fra en arraylist i
> en klasse og overføre det til en anden klasse. Fejlen jeg får er "non-static
> method PushKort() cannot be referenced from a static context".
>
> Koden ser nogenlunde således ud (det uinteressante er skåret væk):
>
> Klassen KortStak:
> ---
> public class KortStak
>
> public Object kortelement;
>
> public KortStak()
> {
> kortstak = new ArrayList();
> }
>
> (...)
>
> public Object PushKort()
> {
> int i = kortstak.size();
> if (i == 0)
> {System.out.println("FEJL! Ingen kort i stakken!");
> }
> kortelement = kortstak.get(0);
> kortstak.remove(0);
> return kortelement;
> }
>
> Klassen Haand:
> ---
> i=0;
> x=4;
>
> public void genererHand()
> {
> while(i < x){
> String tekst = KortStak.PushKort();
> haandlist.add(tekst);
> i++;
> }
>
> Nogle der kan give et bud på fejlen og hvordan den rettes?
>
>


Michael Banzon (19-10-2004)
Kommentar
Fra : Michael Banzon


Dato : 19-10-04 21:44

Peter Kjellerup Rasmussen wrote:
> er dine objekter de dynamiske udgaver af dine klasser.

wtf?

> En anden lille kommentar
> En tredie lille kommentar

En fjerde lille kommentar: top-posting er ikke go' stil ;-P

--
Michael Banzon
http://michael.banzon.dk/

Peter Kjellerup Rasm~ (19-10-2004)
Kommentar
Fra : Peter Kjellerup Rasm~


Dato : 19-10-04 22:09

Michael Banzon wrote:
> Peter Kjellerup Rasmussen wrote:
>
>> er dine objekter de dynamiske udgaver af dine klasser.
> wtf?
Ja? Blev det lidt for metaforisk eller billedligt for dig eller hvad er
det du ikke forstår? Jeg kunne jo selvfølgeligt også bare have henvist
til fx. suns beskrivelse på
http://java.sun.com/developer/onlineTraining/new2java/supplements/2001/aug01.html#basics

>> En anden lille kommentar
>> En tredie lille kommentar
>
>
> En fjerde lille kommentar: top-posting er ikke go' stil ;-P
Jaja da. Og jeg skulle også have klippet noget af den tidligere post ud,
men sådan er der jo så meget.... Flertallets tyrani måske .... ;)

mvh
Peter

Michael Banzon (19-10-2004)
Kommentar
Fra : Michael Banzon


Dato : 19-10-04 22:36

Peter Kjellerup Rasmussen wrote:
> Michael Banzon wrote:
>
>> Peter Kjellerup Rasmussen wrote:
>>
>>> er dine objekter de dynamiske udgaver af dine klasser.
>>
>> wtf?
>
> Ja? Blev det lidt for metaforisk eller billedligt for dig eller hvad er
> det du ikke forstår? Jeg kunne jo selvfølgeligt også bare have henvist
> til fx. suns beskrivelse på
> http://java.sun.com/developer/onlineTraining/new2java/supplements/2001/aug01.html#basics

Nejnej Jeg undrede mig bare lidt over formuleringen med at objekter
er dynamiske udgaver af klasser... Sådan har jeg alrig fået den før

>
>>> En anden lille kommentar
>>> En tredie lille kommentar
>>
>>
>>
>> En fjerde lille kommentar: top-posting er ikke go' stil ;-P
>
> Jaja da. Og jeg skulle også have klippet noget af den tidligere post ud,
> men sådan er der jo så meget.... Flertallets tyrani måske .... ;)

Hehe ;-P

--
Michael Banzon
http://michael.banzon.dk/

Ukendt (20-10-2004)
Kommentar
Fra : Ukendt


Dato : 20-10-04 15:40

>Det der er dit problem er at du ikke har skelnet mellem objekter og
>klasser. Objekter at instansieringer af klasserne eller sagt på en anden
>måde er dine objekter de dynamiske udgaver af dine klasser.
>Det du har brug for er en instansiering af kortStak klassen som i:
>KortStak ks = new kortStak();
>for så kan du nemlig kalde ks.PushKort() og få et Objekt tilbage fra det
>kald.

Hvor præcist skal instansieringen placeres?



Kristian Thy (20-10-2004)
Kommentar
Fra : Kristian Thy


Dato : 20-10-04 15:42

<-= KG =-> uttered:
>>Det du har brug for er en instansiering af kortStak klassen som i:
>>KortStak ks = new kortStak();
>>for så kan du nemlig kalde ks.PushKort() og få et Objekt tilbage fra det
>>kald.
>
> Hvor præcist skal instansieringen placeres?

Før kaldet til PushKort().

--
-- [ kristian ] --------------------------------------------------------
--------------- [if( you->toppost() ) { killfilter->append( you ); }] --
--

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste