Java ongelma?

Mitä tarkalleen tämän virheilmoituksen mukaan pitäisi tehdä? Ilmoitus tulee kun kutsutaan paketissa olevaa luokan metodia.

local variable sulje is accessed from within inner class; needs to be declared final.

sulje.closedConnection();
3366
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

siis muuttujaa "sulje" käsitellään luokassa olevan sisäisen luokan koodissa. Java haluaa tämän muuttujan olevan "final" muotoinen, ettei sitä enää aliluokassa muutettais.

private final Tyyppi sulje = new Tyyppi();

eli sulla on jotain

public class Keke
{
public Tyyppi sulje = new Tyyppi();

//jonka sisällä on toinen luokka
__________public class Tane
__________{
_______________sulje.closeConnecton();
__________}

}

Eli sulje-muuttujaa ei sais muuttaa siäisen luokan sisällä, eli pääluokassa se pitää määritellä final-tyyppiseksi.

Äänestä
  • Final:in lisääminen olion eteen korjasi virheen. Kiitos!

    Äänestä

  • Local inner classes may only make reference to local variables if they are final. Eli olisikohan kyseessä ollut local tai anonymous inner class. Tavallisessa inner class'issa saa tehdä viittauksen "pääluokan" jäseniin, vaikkei ne olisikaan final, ja ymmärtääkseni kirjoittamassasi esimerkissä tilanne oli juuri tämä. Local ja anonymous inner class'ista saa tehdää viittauksen "pääluokan" muuttujiin vain jos ne on final ja initialisoitu. Anteeksi huonon suomen ja vielä huonomman englannin sekasotku. Olen vain vähälahjainen koodaaja.

    Äänestä

Kommentoi aloitusta


Vesku kirjoitti:

Mitä tarkalleen tämän virheilmoituksen mukaan pitäisi tehdä? Ilmoitus tulee kun kutsutaan paketissa olevaa luokan metodia.

local variable sulje is accessed from within inner class; needs to be declared final.

sulje.closedConnection();

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu