carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
5.276 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 1349 von 2963 (46%) |<   <   >   >|

Autor Harald Faber
Datum 13.08.04, 12:12
Betreff Re: statische Klassenobjekte


    Zitat:
    Zuerst mal Hallo zusammen,
    Ich weiss nicht ob das wirklich eine Newbiefrage ist, aber ich denke ein Profie wüsste es.
Ganz sicher auch schon ein "nur" Fortgeschrittener. ;-)

    Zitat:
    >Ich hab eine Klasse

    class Klasse {
        public int a;
        public static Klasse Obj[];
        
        public void setup(){
            Obj=new Klasse[10];
        }
    }


    setup() wird natürlich extern aufgerufen.

    Wenn ich jetzt aber versuche auf diese Objekte zuzugreifen dann hagelt es NullPointerExceptions.
    Das tue ich z.B. so:
    Klasse.Obj[1].a=1;

    Wisst ihr an was es liegt? Danke im Vorraus.
Jo, klassischer Fehler, vorrangig von C/C++ Programmierern begangen afaik.
Obj=new Klasse[10];
bedeutet nur, dass Obj nun ein Array aus 10 Klasse-Objekten aufnehmen können wird. Aber die 10 Objekte sind noch NULL.

Abhilfe:
public void setup()
{
    Obj = new Klasse[10];
    for (int i = 0; i < Obj.length; i++)
    {
        Obj[ i ] = new Klasse();
    }
}


Dann knallt es nicht mehr.
Übrigens sind public Klassenvariablen unschön und verpönt. Besser mit getter und setter arbeiten:

private int a;

public int geta()
{
    return a;
}
public void seta(int newValue)
{
    a = newValue;
}



Diskussionsverlauf:
    Re: statische Klassenobjekte
statische Klassenobjekte
        Re: statische Klassenobjekte (schneller)

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com