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

548

    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. Persujen vaalilupaus oli euron bensa

      Nyt puhutaan jo kolmen euron bensasta. Kyseessä on Suomen historian törkein vaalipetos.
      Maailman menoa
      93
      2168
    2. Vain vasemmistohallitus saa minut menemään töihin

      Änkyräkapitalistien sortaessa kansaa en laita rikkaakaan ristiin. Elän mielummin Kelan tuilla, ja jos niitä leikataan, n
      Maailman menoa
      45
      2132
    3. Maataloustuet perittävä korkojen kera takaisin

      Yrittäjiltä jotka ovat myyneet tuotantoaan ulkomaille. Veronmaksajan kustantama tuki on tarkoitettu elintarvikkeiden hi
      Maataloustuki
      50
      1855
    4. Topi osti Askon

      Hieno mies. Pelastaa työpaikkoja. Kiitokset myös emännälleen, joka pitää isännän virkeänä. https://www.is.fi/taloussan
      Maailman menoa
      75
      1370
    5. Mitä kirjainta kaipaat?

      Pitkästä aikaa tämmöistä. Onko kirjain muuttunut edellisestä. ☺️
      Ikävä
      86
      1271
    6. Kastaa ja upottaa on eri sanat

      Kastaa ja upottaa on eri sanat ja niillä on eri merkitys. Eikä Jeesusta haudattu upottamalla maahan kaivettuun kuoppaan
      Kaste
      219
      1151
    7. Uskomatonta touhua!

      Ei olis uskonut että kateus yrittäjää kohtaan menee noin pitkälle. TTP:ssa irrotettu sähköjohto jäätelöaltaasta. Kaikki
      Haapavesi
      31
      1100
    8. Oliko se oikeasti epäselvää

      sinulle että olin ihastunut sinuun? (Ymmärrän että siitä on aikaa, eikä voi olettaa että kaikkea muistaisi tai että men
      Ikävä
      58
      1048
    9. Miten hän sinua katsoi?

      😊😊😊😊😊😊
      Ikävä
      68
      969
    10. Miksi eduskuntatalon portaille sytyttään tänään 8 645 kynttilää?

      Oikeus elämään ry järjestää lauantaina 21.3.2026 tapahtuman, jossa Eduskuntatalon portaille sytytetään 8 645 kynttilää.
      Luterilaisuus
      285
      910
    Aihe