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

465

    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. Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi

      Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit
      Maailman menoa
      98
      6428
    2. KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!

      STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
      Maailman menoa
      360
      5974
    3. Mikä siinä on ettei persuille leikkaukset käy?

      On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei
      Maailman menoa
      60
      2893
    4. Lääppijä Lindtman jäi kiinni itse teosta

      Lindtman kyselemättä ja epäasiallisesti koskettelee viestintäpäällikköä. https://www.is.fi/politiikka/art-2000011780852
      Maailman menoa
      107
      2348
    5. Juuri nyt! Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti

      Ai että mä nautin, Tytti erot vireille! "Käytös on kohdistunut avustajia ja toisia kansanedustajia kohtaan, uutisoi STT
      Maailman menoa
      107
      2018
    6. Onko kaivattusi

      liian vetovoimainen seksuaalisesti?
      Ikävä
      125
      1774
    7. Puolen vuoden koeaika

      Voisi toimia meillä. Ensin pitäis selvittää "vaatimukset" puolin ja toisin, ennen kuin mitään aloittaa. Ja matalalla pro
      Ikävä
      19
      1653
    8. Tytti Tuppurainen nöyryyttää avustajiaan

      Tytti Tuppurainen nöyryyttää SDP:n eduskuntaryhmän kokouksissa sekä avustajia että kansanedustajia. Hän nolaa ihmisiä ju
      Kotimaiset julkkisjuorut
      181
      1320
    9. On todella hassua

      Ajatella että pitäisit erityisen kuumana tai seksikkäänä?
      Ikävä
      73
      1217
    10. Huomaatteko Demari Tytti ei esitä pahoitteluitaan

      Samanlainen ilmeisesti kuin Marin eli Uhriutuu no he ovat Demareita ja muiden yläpuolella siis omasta mielestään
      Maailman menoa
      33
      1158
    Aihe