El Viking Skrevet 23. november 2006 Del Skrevet 23. november 2006 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
aleh Skrevet 23. november 2006 Del Skrevet 23. november 2006 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
El Viking Skrevet 23. november 2006 Forfatter Del Skrevet 23. november 2006 Ja, jeg har kildekoden. Dette er GPL. Og det er meningen at den skal være privat. Tipper det er jeg som kaller den feil på en eller annen måte. For jeg er jo ingen super-rev til programmering. Men nå har jeg spurt han som har laget det, så da får vi se. =) Lenke til kommentar
dostojevski Skrevet 23. november 2006 Del Skrevet 23. november 2006 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
El Viking Skrevet 23. november 2006 Forfatter Del Skrevet 23. november 2006 Takker og bukker. Ja , tror det er jeg som gjør noe feil her. Må se nærmere på greiene. =) Eclipse er helt nytt for meg (og Java har jeg ikke sett på på mange år!). Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå