Framen käyttäminen suorittamatta

Makkarapipo

Yritän suorittaa seuraavan tyylistä koodia:

Main frame = new Main();
frame.myValue = 1;
frame.myVoid();

Ongelma on se, että kun suoritan:
Main frame = new Main();
silloin suoritetaan framen Main koodi, jota en halua tehdä.

Olen myös kokeillut seuraavanlaista:

public class Main {
int block = 0;

public Main() {
if (block == 0) {
koodi jota en halua suorittaa
final int block = 1;
}
}
}

Mutta jostain syystä tämä final ei halua toimia.

Osaisikohan kukaan auttaa?

6

540

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • foobarfoo

      Mikset määrittele tuota konstruktoria suoraan tyhjäksi (tai poista sitä kokonaan)?
      PS. Normaalisti Javassa käytetään set- ja get-metodeja luokan muuttujien asettamiseen. Ei siis
      frame.myValue = 1; vaan frame.setMyValue(1);

      • Makkarapipo

        Kyseessä on siis main class. Tyhjentämällä tai poistamalla main konstruktorin siis koko koodi ei tee mitään.
        Jos nyt ymmärsin oikein :)


      • foobarfoo
        Makkarapipo kirjoitti:

        Kyseessä on siis main class. Tyhjentämällä tai poistamalla main konstruktorin siis koko koodi ei tee mitään.
        Jos nyt ymmärsin oikein :)

        Öö, java-luokka ei tarvitse konstruktoria. En nyt myöskään ymmärrä miksi tuolla Main-luoka konstruktorissa on koodia jota ei haluta suorittaa. Luokan konstruktoria kutsutaan vain kerran luokan ilmentymän, eli olion, elinaikana, joten tuota koodia ei suoriteta koskaan.


    • Onko tarkoitus siis tehdä niin, että luotaessa ensimmäinen instanssi kyseisestä luokasta, ei jotain tiettyä koodia suoriteta, muulloin suoritetaan?

      Mahdollisuuksia on monia. Final int ei niihin taida kuulua. :)
      Miten olisi static -muuttuja, jonka arvoa kasvatetaan frameja luotaessa?

      Pistä muuten se koodi, jota et suorittaa halua, omaan metodiinsa ja kutsu sitä tarvittaessa. Tulee siistimpi konstruktori...

      Mitä sitten tuohon mainiin tulee, varmaan haet metodia, joka voitaisiin komentoriviltä menemään pistää: public static void main(String[] args)? Sitä ei kuitenkaan kutsuta kuin kerran ohjelman eliniässä, joten siihen tuo ei sovellu.

      Konstruktori on sitten eri asia.

      • up0down0 Kyseessä on siis main class. Makkarapipo

        Sori vaan kun olen aivan noobi tämän Javan kanssa.

        Haluan suorittaa koodin, kun ohjelma käynnistyy. Tätä koodia ei saisi kuitenkaan jälkeenpäin suorittaa.

        Koodi jota en halua suorittaa on pakko suorittaa kun ohjelma käynnistyy. Kuitenkin koodi, joka on suoritetaan ohjelman alussa suoritetaan kokonaisuudessaan kun "Main frame = new Main()" suoritetaan.

        En saa millään estettyä tietyn koodinpätkän suorittamista, sillä kaikki Mainissa käytettävät variablet on alustettava koodin alussa.

        Toivottavasti ymmärrätte ongelmani, joka on hieman vaikeasti selitettävissä.


      • JiiiTeee
        up0down0 Kyseessä on siis main class. Makkarapipo kirjoitti:

        Sori vaan kun olen aivan noobi tämän Javan kanssa.

        Haluan suorittaa koodin, kun ohjelma käynnistyy. Tätä koodia ei saisi kuitenkaan jälkeenpäin suorittaa.

        Koodi jota en halua suorittaa on pakko suorittaa kun ohjelma käynnistyy. Kuitenkin koodi, joka on suoritetaan ohjelman alussa suoritetaan kokonaisuudessaan kun "Main frame = new Main()" suoritetaan.

        En saa millään estettyä tietyn koodinpätkän suorittamista, sillä kaikki Mainissa käytettävät variablet on alustettava koodin alussa.

        Toivottavasti ymmärrätte ongelmani, joka on hieman vaikeasti selitettävissä.

        Hmm... kenties haluat käyttää useampaa muodostinta joita käytät tarpeen mukaan.
        Vilkaseppa tänne http://cs.joensuu.fi/~vouti/tjdoku/JAVA/luku6.html#Konstruktorit

        //Esimerkki

        class Luokka {

        public void Luokka () {
        //Omaa koodia tai jätä tyhjäksi
        }

        public void Luokka (int myVal) {
        this.myValue = myVal;
        //Tänne kans jotain jos haluat
        }

        }

        Uutta instanssia muodostaessa valitset vain tarpeen mukaan sopivan muodostimen, joissa koodi jonka haluat suorittaa.

        // Esimerkki
        Luokka l = new Luokka ();
        tai
        Luokka l = new Luokka (1234);


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

    Luetuimmat keskustelut

    1. Kiva kun SDP alkaa hallitsemaan Suomea

      Vanhat hyvät ajat taas palaavat ja kansa vaurastuu. Muistatteko vielä Sorsan aikakauden? Silloin Suomessa tehtiin jopa
      Maailman menoa
      386
      10104
    2. Säästäminen on typerää, muistakaa äänestää demareita

      Säästäminen on typerää, koska aiheuttaa vain talouden taantumista ja lopulta tappaa potilaan. Demareiden tapa on satsat
      Maailman menoa
      95
      6424
    3. Olli Rehn: Eläkkeistä pitää leikata. Nyt tuli Lindtmanille kauhun paikka

      jos johtaa seuraavaa hallitusta. Purra: eläkkeisiin ei kosketa. Eikä tällä hallituskaudella varmasti kosketa, mutta seur
      Maailman menoa
      405
      6145
    4. SDP:n budjetin peruskivi: "Rahaa nimittäin on!"

      Demarien talouspolitiikan ydin on usein tiivistetty klassiseen meemiin: rahaa on, kunhan se on jonkun muun rahaa. Vuoden
      Maailman menoa
      161
      4481
    5. Sara Sieppi umpirehellisenä Amazing Race -kulissien takaisesta elämästä

      Sara Sieppi oli mukana Amazing Race Suomi -realityssä. Somevaikuttajalla oli takana raskasta aikaa ja isoja suruja, eikä
      Suomalaiset julkkikset
      1
      3798
    6. Poliisien suosikkipuolueet ylivoimaisesti: Kokoomus ja persut

      samoin on armeijan henkilöstön kanssa. Sen sijaan sekä vihreät, vasliitto ja SDP ovat hyljeksittyjä puolueita poliisien
      Maailman menoa
      88
      3374
    7. Sdp, Vihreät ja vasemmistoliitto muuttumassa naisten puolueiksi?

      Sdp 64 % naisia, vihreät 70 % naisia ja vasemmistoliitto 60 % naisia. Ilmankos ne puolueet ajaa autoilevien kantasuomal
      Maailman menoa
      96
      3331
    8. Kun täällä kysytään aina vaan naisilta

      Niin nyt kysytään miehiltä. Mies, voisitko ottaa kumppaniksesi naisen joka nostaa enemmän penkistä kuin sinä? Tienaa en
      Sinkut
      64
      3136
    9. Herkkua vai hötöä? Kaksi Beck-leffaa tällä vkolla tv:stä

      Beck-elokuvat tuntuvat olevan suomalaisten makuun. Tällä viikolla televisiosta tulee kaksi ruotsalaista taidonnäytettä,
      Elokuva
      7
      3078
    10. Hatunnosto! Mari Hynynen (os. Perankoski) ja Jouni Hynynen auttavat vähäosaisia upealla tavalla!

      Hatunnosto! Mari ja Jouni Hynynen ovat Vailla vakinaista asuntoa ry:n uudet kummit. Hynysiä motivoi halu lisätä ymmärr
      Maailman menoa
      10
      3032
    Aihe