Toon posts:

[JAVA] static method en keyword this. probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
wat doe ik hier fout?
code:
1
2
3
4
5
6
7
8
9
public class test
{
    private static String color = "white";

    public static void setColor(String color)
    {
        this.color = color;
    }
}

Error code:
code:
1
2
3
4
5
6
7
--------------------Configuration: Hst5 - JDK version 1.2.2 <Default>--------------------
K:\School\Infm2\Opdrachten\Infm2\Hst5\test.java:7: Undefined variable: this
        this.color = color;
        ^
1 error

Process completed.

Lijkt wel of een static method niet goedsamen werkt met this. ofzo.
:(

Verwijderd

Een static method heeft geen this pointer.
Omdat this wijst naar een instansie van de klas.
Een static method bestaat maar 1 keer voor alle instansies van de klas, daarom kan je een static method aanroepen zonder dat je een instansie van de klas hebt gemaakt en daarom kan / mag je er geen this pointer gebruiken.

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

Alarmnummer

-= Tja =-

fix, en het klopt wat Aragorn123 zegt..
code:
1
2
3
4
5
6
7
8
9
public class test
{
    private static String _color = "white";

    public static void setColor(String color)
    {
        _color = color;
    }
}

Verwijderd

Topicstarter
thx voor jullie replies :)

Het is een fout van mijn Java boek, want daar staat het bij een oefening fout in
|:(

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 20 november 2001 18:51 schreef Alarmnummer het volgende:
code:
1
2
3
4
5
    private static String _color = "white";
    public static void setColor(String color)
    {
        _color = color;
    }
Of natuurlijk gewoon
code:
1
2
3
4
5
    private static String color = "white";
    public static void setColor(String color)
    {
        test.color = color;
    }

:)

(en het is standaard om classnamen met een hoofdletter te beginnen, ugh)

Verwijderd

Op dinsdag 20 november 2001 19:21 schreef Onno het volgende:
het is standaard om classnamen met een hoofdletter te beginnen
Nee. Dat is een style regel die een aantal mensen de rest van de mensen door de strot willen duwen. :r

Ik heb er niks tegen (zolang je maar consistent bent..), maar het is zeker geen 'standaard'.

Als de makers van Java het echt standaard hadden willen maken, hadden ze het wel gewoon in de language specification gestopt (zoals Ruby dat bijvoorbeeld heeft, iirc).

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

Alarmnummer

-= Tja =-

Op dinsdag 20 november 2001 23:13 schreef Sneech het volgende:

[..]

Nee. Dat is een style regel die een aantal mensen de rest van de mensen door de strot willen duwen. :r

Ik heb er niks tegen (zolang je maar consistent bent..), maar het is zeker geen 'standaard'.

Als de makers van Java het echt standaard hadden willen maken, hadden ze het wel gewoon in de language specification gestopt (zoals Ruby dat bijvoorbeeld heeft, iirc).
Ik kijk niet eens naar code als het zich niet aan de standaarden houdt. En het is zeker wel een standaard. En uiteindelijk kun je er veel van afleiden. Je weet makkelijk of je met een class te maken hebt of met een instantie ervan. Tis allemaal uiteindelijk voor je eigen bestwil ;)

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 20 november 2001 23:13 schreef Sneech het volgende:
Ik heb er niks tegen (zolang je maar consistent bent..), maar het is zeker geen 'standaard'.
Even iets zorgvuldiger lezen. Ik zei niet 'het is een standaard', ik zei 'het is standaard'. Daar zit verschil tussen.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Sneech: Nee. Dat is een style regel die een aantal mensen de rest van de mensen door de strot willen duwen. :r
Gefrustreerd :?


C# heeft trouwens leuke style-regels... zowel klasse-namen als properties als methode-namen met hoofdletters :O .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op woensdag 21 november 2001 07:10 schreef mbravenboer het volgende:
Gefrustreerd :?
Nou, ik heb een hekel aan mensen die hun stijl aan anderen willen opleggen (behalve in een team natuurlijk).
Op dinsdag 20 november 2001 23:57 schreef Alarmnummer het volgende:
het is zeker wel een standaard
Waar staat dat dan ? En waarom wordt het niet afgedwongen door de compiler ?

En nogmaals, ik begin de namen van mijn classes ook met hoofdletters, ik zou alleen niemand erop aanspreken als hij een andere stijl gebruikt.

  • tomato
  • Registratie: November 1999
  • Niet online
Als ik na hier na iedere zin een [enter] geef word ik er toch ook op aangesproken? Maar niemand die mijn verhaal niet kan lezen.
Het is gewoon wel zo duidelijk als ik ook op een normale manier alinea's gebruik en IMHO is er niets vreemds aan dat ik er op aangesproken zou worden als ik dat niet deed.

Verwijderd

Lekkere vergelijking. Dat soort regels zijn er al duizenden jaren, en over dat soort regels is iedereen het wel zo'n beetje eens.
Zover zijn we gewoon nog niet met programmeertalen (en het duurt ook nog wel ff voordat we wel zover zijn).

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op woensdag 21 november 2001 10:32 schreef Sneech het volgende:
Dat soort regels zijn er al duizenden jaren,
Non-argument?
en over dat soort regels is iedereen het wel zo'n beetje eens.
Hierover ook hoor.

Maar, nogmaals.. je zeurt over iets wat ik helemaal niet gezegd heb.
Pagina: 1