Gå til innhold

Kalle en PRIVATE metode fra en PUBLIC class


Anbefalte innlegg

Hei.

 

Har et bibliotek som jeg har importert (tror jeg) i Eclipse.

Jeg lager meg en klasse med public main etc..

Og her oppretter jeg en instans(?) av en klasse.

Dernest prøver jeg å kalle en av dens metoder, som jeg vet ut fra kildekoden er PRIVATE. Da får jeg feilmelding.

 

Eks.

 

Dilldall dd = new Dilldall();
TimeSeries v = dd.fetch("masse argumenter her");

Jeg får feilmelding på "fetch" om at metoden ikke er synlig. "The method fetch(String, String) from the type Dilldall is not visible". Og jeg antar at dette er fordi den metoden i Dilldall er PRIVATE.

Men dette er jo et bibliotek jeg har importert, og ettersom den er lagd slik, antar jeg at det er meningen at det skal være slik ( at den SKAL være PRIVATE). Derfor vil jeg helst unngå å forandre metoden til PUBLIC.

Hvis det i det hele tatt er det som er feilen, da?

Noen som har noen tips?

 

Jeg bruker Eclipse.

Lenke til kommentar
Videoannonse
Annonse

Hvis den er private så er det nok en hjelpemetode i Dilldall klassen. Hele poenget med å gjøre den privat er å beskytte den fra ekstern tilgang. Å kalle den kan ha uforutsette følger hvis du ikke er helt sikker hva den gjør. Har du kilde koden?

 

Er du sikker du har tilgangen til kildekoden? Bibliotekene inneholder kompilerte klasser.

Lenke til kommentar

For det første: Feilen du gjøre er semantisk, ikke syntaktisk. Det SKAL ikke gå ann å kalle en private metode fra en annen klasse. De/den som skrev klassen har en helt spessiel tanke med hva den metoden gjør, og hvis du kaller den fra utenfor klassen kan du ikke lenger stole på at klassen oppfører seg som den skal. Dette er hele poenget med å deklarere en variabel private.

 

Når det er sagt: Hvis du alikevel ønsker å kalle denne metoden fra en annen kontekst enn klassen den ligger i er den beste løsningen antagelig å skrive en ny metode i klassen kalt feks fetch_public(). Denne deklarerer du så protected, public eller whatever. Det eneste denne metoden gjøre er så å kalle fetch() og evt. returnere resultatet. Men igjen: Dette er et hack og ikke vanlig bruk av biblioteket du skal bruke.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...