Avatar billede fasterlars Nybegynder
23. maj 2007 - 10:04 Der er 9 kommentarer og
1 løsning

Simpelt java klasse kald

Hej.

Jeg har dette simple spørgsmål til et kald i en anden klasse.

try {       
XMPPConnection connection = new XMPPConnection("192.168.1.2"); }
catch (Exception e) { }       
    }
   
    public void auth()
    {
            try {
        connection.connect();
        connection.login("hej", "xxxxxx");
        }       
        catch (XMPPException e) { e.printStackTrace(); }
    }

--------
den kender ikke connection i connection.connect(); og connection.login("hej", "xxxxxx");

Smider jeg det hele ind i samme klasse:

public void Initialize()
{
XMPPConnection connection = new XMPPConnection("192.168.1.2");
    try {
   
    connection.connect();
    connection.login("farsen", "xxxxxx");
--------

... er der ingen problemer!

Formoder det er noget med en constructor der skal laves? Har rodet en del med det, men uden held.
Håber i kan hjælpe!

Mange tak :)
Avatar billede thesurfer Nybegynder
23. maj 2007 - 10:28 #1
Hvor er din reference til den anden klasse?

Eksempel:
- I KlasseA har du:

KlasseB kb = new KlasseB();
kb.XMPPConnection connection; // definer variablen, men sæt den ikke endnu

// constructor her og andet kode

    public void auth()
    {
        try
        {
        this.connection = new XMPPConnection("192.168.1.2"); // opret instansen
        this.connection.connect();
        this.connection.login("hej", "xxxxxx");
        }
        catch (kb.XMPPException e) { e.printStackTrace(); }
    }


Der skal muligvis ikke stå "kb" i: catch (kb.XMPPException e)
Avatar billede thesurfer Nybegynder
23. maj 2007 - 10:29 #2
Og det skal muligvis være:

        this.connection = new kb.XMPPConnection("192.168.1.2"); // opret instansen
Avatar billede thesurfer Nybegynder
23. maj 2007 - 10:29 #3
Det er sådan set generel programmering.. jeg kender intet til "XMPPConnection".. :-)
Avatar billede fasterlars Nybegynder
23. maj 2007 - 10:50 #4
Tak for dit svar!

Problemet er bare, at jeg ikke må bruge den XMPP connection i samme klasse som jeg bruger connection i.
Så dit eksempel:

try
        {
        this.connection = new XMPPConnection("192.168.1.2"); // opret instansen
        this.connection.connect();
        this.connection.login("hej", "xxxxxx");
        }
kan derfor ikke fungere.
Så den skal altså kalde den XMPPConnection oppe fra den første klasse. Kan det have noget at gøre med den ligger i try løkken?
Avatar billede fasterlars Nybegynder
23. maj 2007 - 10:53 #5
Jeg glemte vist lige at komme første klassenavn med. Koden ser således ud:

public void connect()
    {
           
    try {       
    XMPPConnection connection = new XMPPConnection("192.168.1.2");
    }
          catch (Exception e) { }       
    }
   
    public void auth()
    {
    try {
    connection.connect();
    connection.login("farsen", "xxxxxx");
    }       
        catch (XMPPException e) { e.printStackTrace(); }
    }
Avatar billede thesurfer Nybegynder
23. maj 2007 - 11:15 #6
Det forstår jeg ikke:

"Problemet er bare, at jeg ikke må bruge den XMPP connection i samme klasse som jeg bruger connection i."

Hvad mener du? Hvorfor må du ikke bruge den? Er det fordi den ikke er inkluderet/importeret i klassen ("KlasseB" i eksemplet)?
Avatar billede fasterlars Nybegynder
23. maj 2007 - 11:21 #7
Årsagen er, at den connection jeg laver øverst oppe skal bibeholdes. Derefter kan jeg så henvise til den connection, og oprette brugere, authe osv via den(det er et IM system). Hvis jeg opretter nye forbindelser "XMPPConnection connection = NEW XMPPConnection("192.168.1.2"); " hele tiden går det ikke. Man kan ikke logge ind som en vis bruger på een forbindelse, og sende beskeder fra denne bruger via en anden forbindelse.

Håber du forstår :)
Men tak for din hjælp ihvertfald!
Avatar billede thesurfer Nybegynder
23. maj 2007 - 12:03 #8
connection bibeholdes jo netop, hvis du bruger:

KlasseB kb = new KlasseB();
kb.XMPPConnection connection; // definer variablen, men sæt den ikke endnu

// constructor her og andet kode

Du kunne f.eks. også smide instantieringen i constructoren:

KlasseB kb = new KlasseB();
kb.XMPPConnection connection; // definer variablen, men sæt den ikke endnu

Pub...
{

  try
  {
    this.connection = new XMPPConnection("192.168.1.2");
  }       
  catch (XMPPException e)
  {
    e.printStackTrace();
  }

}

Hvis du ikke kan bruge XMPPException, kan du muligvis bruge kb.XMPPException.

Du laver kun 1 kald til KlasseB, så der burde ikke være nogen problemer..

Med mindre at du nedlægger KlasseA, hvorefter du så er nødt til at genoprette forbindelsen..
Avatar billede fasterlars Nybegynder
23. maj 2007 - 12:45 #9
Ok, den er hjemme, tak! :)
Avatar billede thesurfer Nybegynder
23. maj 2007 - 20:53 #10
Jeg går ud fra, at jeg nu kan smide et svar.. :-)

Husk at markere navnet til venstre, inden du klikker på Accepter-knappen.. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester