Gå til innhold

Hvordan opprette objekt av innkommende parameter?


Anbefalte innlegg

Skrevet

Halla!

 

Hvordan kan jeg opprette et objekt med verdien av parameteren metoden får inn? Altså hvis metoden får inn "Test", skal Test() opprettes.

 

minMetode("Test");

 

public static void minMetode(String tekst) {
  new tekst(); //new Test();
}

Videoannonse
Annonse
Skrevet

hvis du har et begrenset antall objekter så er det enkelt å lage en switch som sjekker verdien på stringen og oppretter rett objekt. men det må finnes en mer fancy måte å gjøre dette på....

Skrevet

Det gir ikke helt mening, det du spør om.

 

La oss si du har et objekt "bil". Ved å passe en parameter, "farge", opprettes en ny bil med angitt farge. Det kan se slik ut:

 

public class Bil{

  private String farge;

  
   public Bil (String farge){
       this.farge = farge;
   }

   //nå kan du lage en ny bil ved å:

  Bil gulBil = new Bil("gul");

Skrevet (endret)
Halla!

 

Hvordan kan jeg opprette et objekt med verdien av parameteren metoden får inn? Altså hvis metoden får inn "Test", skal Test() opprettes.

 

minMetode("Test");

 

public static void minMetode(String tekst) {
  new tekst(); //new Test();
}

5608436[/snapback]

 

Dette kan enkelt gjøres med Class.forName(). Jeg har laget et testcase som demonstrerer konseptet. Hovedklassen er Test.java

 

Werner

 

---

 

Art.java

public interface Art {
 public String getArtsNavn();
}

 

Fisk.java

public class Fisk implements Art {
 protected String artsNavn;
 
 public Fisk() {
   this.artsNavn = "Fisk";
 }
 
 public String getArtsNavn() {
   return artsNavn;
 }
}

 

Fugl.java

public class Fugl implements Art {
 protected String artsNavn;
 
 public Fugl() {
   this.artsNavn = "Fugl";
 }
 
 public String getArtsNavn() {
   return artsNavn;
 }
}

 

Test.java

public class Test {
 public Test() {}

 public static Art minMetode(String tekst) {
  try {
    return (Art)Class.forName(tekst).newInstance();
  } catch (Exception ex) {
    return null;
  }
 }
 
 public static void main(String[] args) {    
   System.out.println(Test.minMetode("Fugl").getArtsNavn());
   System.out.println(Test.minMetode("Fisk").getArtsNavn());
 }  
}

Endret av wernie

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å
×
×
  • Opprett ny...