siDDis Skrevet 13. oktober 2005 Del Skrevet 13. oktober 2005 Eg har problemer med å nå denna 's' variabelen i ein anna klasse Statement s = con.createStatement(); final eller public fungerer ikkje. Kva slags andre måter er det å gjere det på? Må få luka ut mine elementære feil Lenke til kommentar
smetho Skrevet 13. oktober 2005 Del Skrevet 13. oktober 2005 Mener du public på metode eller variabel? Du må (bør ihvertfall, mulig en kan jukse det til) gjøre det gjennom å kalle en metode i den klassen variabelen er plassert. Denne metoden må være public. Lenke til kommentar
mikaelandre Skrevet 13. oktober 2005 Del Skrevet 13. oktober 2005 enten kan du sette variabelen til static, da kaller du Klassenavn.s, men det er ikke lurt. Du kan sette variabelen til public, men da må du ha referanse til et objekt av variabelens klasse. Det kan du få ved hjelp av å sende objektet som et parameter til konstruktoren for andre klasser, eller den kan kalle metoder i andre klasser for å gi beskjed om at den finnes. Det beste er å gjøre s privat, og lage access metoder som er public. Fortsatt trenger du da referanse til et objekt av den klassen, hvis ikke kan den ikke brukes. Lenke til kommentar
siDDis Skrevet 14. oktober 2005 Forfatter Del Skrevet 14. oktober 2005 (endret) Når kan eg bare setja 'final' ellers blir det feil import java.sql.*; public class Main{ public static void main(String[] args) throws Exception { try{ Connection con = null; Statement s = con.createStatement(); Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Done loading mysql driver!"); con = DriverManager.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx/test","xxxx","xxxxx"); if(!con.isClosed()) System.out.println("Successfully connected to "+"MySQL server using TCP/IP..."); } catch(Exception e) { } UserAction ua = new UserAction(); ua.loadMenu(); System.out.println("Program is shutting down!"); } } Detta er main klassen, nå korleis skal eg gå fram for at den skal funker i klassen UserAction? Endret 14. oktober 2005 av siDDIs Lenke til kommentar
smetho Skrevet 14. oktober 2005 Del Skrevet 14. oktober 2005 Du legger objektreferansen som argument i metoden loadMenu(). Denne metoden må du da klargjøre for å ta imot referansen Du kaller metoden slik: ua.loadMenu(s); Og metoden kan se slik ut: public void loadMenu(Statement s) { //her kan du nå bruke referansen s som kom som argument } Kort svar, håper jeg forstod deg rett. Nå må jeg løpe på jobb!! Lenke til kommentar
siDDis Skrevet 14. oktober 2005 Forfatter Del Skrevet 14. oktober 2005 Den fungerer fint, men bare til den eine metoden i den klassen. Det eg krever er at den fungerer til alle metodene i UserAction klassen. Lenke til kommentar
smetho Skrevet 14. oktober 2005 Del Skrevet 14. oktober 2005 Du kan vel gjøre det samme i konstruktøren når du oppretter klassen. Et eksempel: public class UserAction { //variabler private Statement s; //konstruktør public UserAction(Statement s) { this.s = s; } ...andre metoder. Hver av disse kan nå bruke variabelen (objektreferansen s) } Lenke til kommentar
siDDis Skrevet 14. oktober 2005 Forfatter Del Skrevet 14. oktober 2005 Kjempeflott! Tusen takk. Eg må læra meg å forstå konstruktører betre 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å