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

346

    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. Naiset miltä kiihottuminen teissä tuntuu

      Kun miehellä tulee seisokki ja ja sellainen kihmelöinti sinne niin mitä naisessa köy? :)
      Sinkut
      110
      8366
    2. Olet sä kyllä

      ihme nainen. Mikä on tuo sun viehätysvoiman salaisuus?
      Ikävä
      40
      2555
    3. Teuvo Hakkaraisesta tulee eurovaalien ääniharava

      Persuissa harmitellaan omaa tyhmyyttä
      Maailman menoa
      121
      2263
    4. Hiljaiset hyvästit?

      Vai mikä on :( oonko sanonut jotain vai mitä?
      Ikävä
      23
      1936
    5. Miksi kohtelit minua kuin tyhmää koiraa?

      Rakastin sinua mutta kohtelit huonosti. Tuntuu ala-arvoiselta. Miksi kuvittelin että joku kohtelisi minua reilusti. Hais
      Särkynyt sydän
      15
      1674
    6. Turha mun on yrittää saada yhteyttä

      Oot mikä oot ja se siitä
      Suhteet
      11
      1499
    7. Kyllä poisto toimii

      Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa
      80 plus
      16
      1452
    8. "Joka miekkaan tarttuu, se siihen hukkuu"..

      "Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla
      Yhteiskunta
      14
      1399
    9. Näkymätöntä porukkaa vai ei

      Mon asuu yksin. Mitas mieltä ootte ?
      Ikävä
      15
      1272
    10. Kristityt "pyhät"

      Painukaa helvettiin, mä tulen sinne kans. Luetaan sitten raamattua niin Saatanallisesti. Ehkä Piru osaa opetta?!.
      Kristinusko
      12
      1183
    Aihe