[Java] None-static variable

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik zit met de volgende situatie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyView
{
    Form f;
    Vector d_v;
    ExitButtonHandler ebh;
    
      int d_x;
      int d_y;
      boolean d_drawCalled;
    
      public MyView()
        {
            f = new Form(500,500, "Drawings");
            ebh = new ExitButtonHandler();
            d_v = new Vector();
              // OOK: AANMAKEN VAN FORM BUTTONS E.D.
        }
// EN NOG VEEL MEER
}

Als ik dit nu probeer te compilen krijg ik de error:
non-static variable d_v/f/ebh cannot be referenced from a static context

Weet iemand hoe dat komt? Ik kan het wel oplossen door er static voor te zetten, maar volgens mij is dat niet helemaal een nette oplossing ;)

Het is iig de bedoeling dat ik ebh/d_v/f kan gebruiken in de andere methodes die ik nog in MyView heb staan.

BTW, let niet op FORM en ExitButtonHandler, dat zijn voorgedefinieerde constructors.

Ik blijf er iig vrij nuchter onder....


Verwijderd

Je weet zeker dat die foutmelding uit deze code komt? Het zou moeten werken lijkt mij, iig zou je deze foutmelding niet moeten krijgen. Doe je niks raars in je main methode?

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

nxt

ik ben het eens met Zef er is volgens mij niets mis met deze code.
roep je die variabelen niet per ongeluk aan
vanuit een static method (bijv. de main)?

en geeft de compiler misschien een regelnummer?

Verwijderd

Ja ik ben het met nxt eens, je probeerd toegang te krijgen tot je variabelen vanuit een statische context, en dat mag uiteraard niet.

Je kunt je variabelen static maken, maar dat wil zeggen dat er maar een instancie bestaat van die variabele. Dus dan maakt het niet uit hoeveel objecten je aanmaakt van je class, de waarde van die variabele zal altijd hetzelfde zijn in elk object.

Verwijderd

laat eens zien waar je die klasse instantieert of um gebruikt...

overigens is het een stuk netter om je variabelen public, private of protected te maken.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Moet je bij een vector niet het type al meegeven? (Bij de declaratie dus) in de zin van Vector<String> Bla; ... ??

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op dinsdag 07 mei 2002 11:26 schreef _Mo_ het volgende:
Moet je bij een vector niet het type al meegeven? (Bij de declaratie dus) in de zin van Vector<String> Bla; ... ??
Verwar jij het niet ff met een C++ vector. Een Java vector accepteerd Objects

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op dinsdag 07 mei 2002 11:30 schreef Glimi het volgende:

[..]

Verwar jij het niet ff met een C++ vector. Een Java vector accepteerd Objects
String is toch een object? Maar inderdaad, de syntax is C++ ... 'k dacht dat 't op deze manier was langsgekomen in een van m'n laatste hoorcolleges, kennelijk was dat fout of juist weer op C++ toegespitst..

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


Verwijderd

Hij doet gewoon zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Test
{
      private Henk h;

      public static void main(String args[])
      {
            new Test();
      }

      public Test()
      {
            h = new Henk();
      }

      public static String getHenkString()
      {
            return h.getString();
      }
}

class Henk
{
      public String s = new String("hallo");

      public Henk()
      {

      }

      public String getString()
      {
            return s;
      }
}

De class maken in een non-static context en dan in een statis functie die class gebruiken...
Test.java:17: non-static variable h cannot be referenced from a static context
return h.getString();

Verwijderd

static weglaten

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ja, ik heb het nu opgelost.

Ik zit echter nog wel met een ander probleem, dat zet ik hier wel even bij, ookal heeft het er zeer weinig mee te maken. Scheelt weer een Topic.

Weet iemand hoe je met jdk1.3.1_02 een string kan splitten op een spatie?

Onder 1.4 kan dat mooi met de split methode van String, waar je dan regexp kan gebruiken, maar onder 1.3.1 kan ik niet een gelijkwaardige functie vinden.

De te splitten string is heel eenvoudig:

"Commando Waarde1 Waarde2"
en ik moet in 2 variabelen Waarde 1 en 2 hebben.
Het commando sloop ik er nu af met een substring().

Ik blijf er iig vrij nuchter onder....


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Goed, dit is wel een debiele methode, maar het werkt:
code:
1
2
3
4
String newstring = "DRAW 100 300".substring(5,"DRAW 100 300".length());
int middle = newstring.lastIndexOf(" ");
int first = Integer.parseInt(newstring.substring(0,(middle)));
int second = Integer.parseInt(newstring.substring((middle+1), newstring.length()));

Als iemand een betere oplossing heeft, graag!

Ik blijf er iig vrij nuchter onder....


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan een StringTokenizer gebruiken die is voor dat soort dingen bedoelt

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Hmm, weet iemand hoelang ik moet wachten na het initialiseren van mijn "form" voordat ik met setColor() van Graphics de pen-kleur van het Graphics object kan veranderen?

Ik wil namelijk een start-kleur opgeven om mee te tekenen in een canvas.

Ik blijf er iig vrij nuchter onder....


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

daar is geen vaste tijd voor. Het kan langer duren, of juist korter
Beter is om de paint () methode af te vangen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op dinsdag 07 mei 2002 15:17 schreef .oisyn het volgende:
daar is geen vaste tijd voor. Het kan langer duren, of juist korter
Beter is om de paint () methode af te vangen
Nog mooier is gebruik maken van Graphics2D en die later casten Graphics, dan hoef je niet te wachten op de graphische context...
Pagina: 1