08. november 2004 - 00:49Der er
11 kommentarer og 1 løsning
Returnere et object fra en metode
hvordan lader metoden returnere en reference til ’hele’ det fundne Person-objekt? jeg skal nemlig have flere retur værdier så bliver nød til at have fat i objected. Har en ide om det noget lignende public Object findNavnViaTlfNr(int n) men når man siger return Object så husker jeg ikke hvordan man skriver det.. men kom med jeres bud
public String findNavnViaTlfNr(int n) { boolean found = false; int i = 0; while(i< TListe.size() && !found) { if ( ((Person)TListe.get(i)).tlfNr ==(n) ) { found = true; } else i++; } if (i< TListe.size()) return ((Person)TListe.get(i)).navn; else return ""; }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
public Person findNavnViaTlfNr(int n) { boolean found = false; int i = 0; while(i< TListe.size() && !found) { if ( ((Person)TListe.get(i)).tlfNr ==(n) ) { found = true; } else i++; } if (i< TListe.size()) return (Person)TListe.get(i); else return null; }
En lidt mere simpel udgave, men som gør det samme:
public Person findNavnViaTlfNr(int n) { for (int i = 0; i < TListe.size(); i++) { if ( ((Person)TListe.get(i)).tlfNr ==(n) ) { return (Person)TListe.get(i); } } return null; }
hmm... kalder metoden og så vil bruge noget af det der kommer tilbage hvordan gør jeg så? ... metoden bliver kaldt med i denne kode her
private void jButton4_actionPerformed(ActionEvent e) { int nr = Integer.parseInt( jTextField2.getText()); String navn = tc.findNavnViaTlfNr(nr); if (nr >=0) { jTextField1.setText("" + navn ); } else { jTextField1.setText(""); jLabel3.setText("Data findes ikke!");
private void jButton4_actionPerformed(ActionEvent e) { int nr = Integer.parseInt( jTextField2.getText()); Person person = tc.findNavnViaTlfNr(nr); if (person != null) { jTextField1.setText(person.getNavn()); } else { jTextField1.setText(""); jLabel3.setText("Data findes ikke!"); } }
Bemærk!
Denne linje: jTextField1.setText("" + person.getNavn());
kræver at du har en metode i personklassen der hedder getNavn()
Beklager - havde overset den mail jeg fik om denne tråd...
Men:
Person person = tc.findNavnViaTlfNr(nr);
og
Object person = tc.findNavnViaTlfNr(nr);
Vil begge fungere. Da alle objekter i Java arver fra klassen Object, kan du sætte alle objekter lig med Object. Men har du lavet dine egne objekter (f.eks. Person) kan du, hvis du har referencen i Object, ikke bruge dine metoder. Det kan du derimode, hvis du fortæller den, at variablen 'person' skal være af typen 'Person', og da din metode findNavn(nr) returnerer et objekt af typen 'Person' kan det lade sig gøre. Gemmer du referencen i Object er du nødt til at caste til den ønskede type: Person p = (Person)person;
nu har du så flyttet referencen over i p, og fortalt den (ved at caste) at den er af typen 'Person'
Håber ikke det er alt for sort snak - men du spørger bare løs, hvis der er noget der er kryptisk :)
tak for det: ) tror nogenlunde jeg er med... skal bare lige lave nogen øvelser med det først så det rigtigt sidder! Det var rart at få styr på det: )
Synes godt om
Ny brugerNybegynder
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.