Viittaaminen

itseensä: this

Tuo viittaus tuottaa vähän harmaita hiuksia.

Ongelma on seuraavanlainen. Oletetaan, että haluan tehdä yksilöllisen linja-auton, ja siihen asetettavan matkustajan. Koodina se voisi olla seuraavanlainen pelkistetysti:

import java.util.*;
public class Linja_auto {

   private ArrayList reissaajat;

   private int rekisterinumero;

   public Linja_auto(int rek) {
      rekisterinumero = rek;
   }

   public Linja_auto() {
      reissaajat = new ArrayList();
   }

   public void lisaa(Matkustaja m) {
      reissaajat.add(m);
   }
}

Matkustaja-olio olisi seuraavanlainen:

public class Matkustaja {

   private String nimi;

   public Matkustaja(String matkustaja) {
      nimi = matkustaja;
   }

}

Testiohjelma, jolla sitä ajan:

public class Testi {

   public static void main(String[] args) {

      Linja_auto Bussi = new Linja_auto(313); // Alustaa linja-auton
      Matkustaja m1 = new Matkustaja("Anna"); // Alustaa matkustajan

      Bussi.lisaa(m1); //Asettaa matkustajan "Anna" autoon.
   }
}

Kääntäminen sujuu ilman ongelmia, mutta jos ohjelmaa haluaa ajaa java Testi -komennolla, niin se antaa virheilmoituksen:

Exception in thread "main" java.lang.NullPointerException
at Linja_auto.lisaa
at Testi.main

Mikähän menee vikaan? Kun kaiken lisäksi jos käyttää this viittausta, niin homma toimii täysin:

public Linja_auto(int rekisterinumero) {
      this();
      this.rekisterinumero = rekisterinumero;
   }

En ymmärrä?? Eikö tuotakaan saa tehtyä ns. analogisesti? Kun ei tuossa virheilmoituksen antavassa koodissa minusta ainakaan pitäisi analogiansa vuoksi olla mitään vikaa.

Myös tuo ArrayList herättää pieniä kysymyksiä. Eikö tuotakaan saa tehtyä esim. String:iä käyttämällä?

Sinänsä miksi en voisi käyttää tuota this -viittausta, kun se toimii? Entäpä tulevaisuudessa? Kun en tiedä nytkään mikä on ongelmana, niin myöhemmässä vaiheessa voi tulla samanlaisia selittämättömiä ongelmia, joista ei noin helpolla luikerrellakaan pois. Muutenkin haluaisin ymmärtää tuota systeemiä enkä pelkästään opetella ulkoa, että mitä komentoja saa missäkin yhteydessä käyttää ja mitä ei. Ja näyttäähän tuo toimivan String muodossa ainakin tuossa Matkustaja-oliossa..

2

416

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ....................

      En jaksanut lukea viestiäs loppuun, mutta oisko onglema siinä, että sulla on kaks rakentajaa linja-autolla, joista vain toisessa teet new ArrayListin. Jos linja-auto luodaan testiohjelman mukaisesti rekisterinumeroparametrillisellä, pysyy reissaajat nullina, eli et voi sen jälkeen kutsua suoraan tuollaisenaan tuota lisäysmetodia.

      • siinä oli kysymys

        kiitti vain avusta.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Helena Koivu menettänyt lapsensa. Onko Mikko Koivulla oma laki?

      Voiko olla totta että äidiltä viedään lapset ja ei mitään syytä ole edes kerrottu äidille itselleen.?
      Kotimaiset julkkisjuorut
      627
      8297
    2. Hannu Pikkarainen ehdottomaan vankeuteen

      KKO tuomitsi 1 v 9 kk. Tämä ei ole Hannulle ilon päivä.
      Kotimaiset julkkisjuorut
      350
      3199
    3. Pikkunaiselle terkkuja

      Olet parasta koko maailmassa! Kaikkein ihmeellisin. Olisitpa täällä. 🧡 harmaasusi
      Ikävä
      418
      2242
    4. Kuinka paljon on

      Merkitystä seksillä kun valitset kumppania?
      Ikävä
      128
      1347
    5. Kauniit naiset

      Ketkä ne on suomussalamen kauniimpie naisie?
      Suomussalmi
      31
      1323
    6. Kuvataiteilija Johanna Oras lataa mielipiteensä Miina Äkkijyrkästä Farmilla: "Miinahan oli..."

      Oho! Johanna Oras ottaa kantaa kollega-Äkkijyrkän Farmi-puuhiin. Farmi Suomi -realityssä koettiin v. 2024 todellinen yl
      Tv-sarjat
      15
      1255
    7. Kuka on mystinen heppamies?

      Nyt tänne vinkkejä siitä kuka on Martinan seurassa viihtyvä hevosmiljonääri. On tullut jo muutamia nimiä esiin keskustel
      Kotimaiset julkkisjuorut
      109
      1181
    8. Muutto ei ratkaise mitään.

      Sielläkin on naapurit. 😉 Nähdään?
      Ikävä
      93
      1113
    9. Olet vieläkin täällä

      Tunnen energiasi. Tunnen että ajattelet minua. En aio koskaan enää ottaa sinuun yhteyttä. Voit ottaa minuun, jos itse h
      Ikävä
      65
      1075
    10. Kuinka hyvin tunnet kaivattusi?

      kuinka hyvin tunnet kaivattusi?
      Ikävä
      46
      933
    Aihe