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

420

    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. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      33
      6744
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      37
      6213
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      29
      3434
    4. Ei tämä etene ikinä

      Kun kumpikaan ei enää ota yhteyttä. Mä en ainakaan uskalla.
      Ikävä
      45
      2900
    5. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2644
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      15
      2338
    7. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      2188
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      16
      2046
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      48
      1897
    10. En ole koskaan kokenut

      Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka
      Ikävä
      19
      1777
    Aihe