# Methoden auf Enum



## fbergie (2. Februar 2009)

Hallo!

Ich habe da folgende Aufgabe bekommen:



> Definieren Sie einen Aufzählungstyp (enum) Aufrufart mit der Methode gibAufrufart, der das String-Array args aus einer Methode public void main(String args[]) übergeben werden kann, und die als Rückgabe die Aufrufart-Wert  *Kein_Parameter, Ein_Parameter, Zwei_Parameter* und *Viele_Parameter*  je nach anzahl der Kommandozeilenparameter liefert



also habe ich mich hingesetzt und es ist dieses dabei raus gekommen:


```
public class Aufg5  {
    
public enum Aufrufart{ Kein_Parameter, Ein_Parameter, Zwei_Parameter, Viele_Parameter}
    
    Aufg5(int y)
    {
        System.out.println(gibAufrufart(y));
    }
          
    public Aufrufart gibAufrufart(int y)
    {
     if(y==0)
           return Aufrufart.Kein_Parameter;
       else if(y==1)
           return Aufrufart.Ein_Parameter;
       else if(y==2)
           return Aufrufart.Zwei_Parameter;
       else
           return Aufrufart.Viele_Parameter;
    }

    public static void main(String[] args)
    {
      new Aufg5(args.length);
    }

}
```

doch dann war ich eher der Meinung das die Aufgabe etwas anderes von mir will, und inach einigen Seiten "insel" habe ich dieses hervorgebracht:


```
public enum Aufrufart {

    Kein_Parameter, Ein_Parameter, Zwei_Parameter, Viele_Parameter;
    
   public Aufrufart gibAufrufart(String[] args){

    if     (args.length == 0)
        return this.Kein_Parameter;
    else if(args.length == 1)
        return this.Ein_Parameter;
    else if(args.length == 2)
        return this.Zwei_Parameter;
    else
        return this.Viele_Parameter;
    }
   
}
```

meine Frage ist nun, wie kann ich den die *gibAufrufart* aufrufen um mir dann den rückgabewert auszugeben.
Habe es versucht mit

 public static void main(String[] args) {
    new Aufrufart();


aber das geht nicht.


----------



## DosCoder (2. Februar 2009)

Hi,
da die Methode _gibAufrufart()_ public ist, ist die Sache leicht:

```
public class Main{
 public static void main(String[] args){
   Aufrufart p  = Aufrufart.gibAufrufart(args);
 }
}
```
Gegebenenfalls musst du die Methode _gibAufrufart_ noch statisch machen, da bin ich mir jetzt nicht sicher.

Ciao
DosCoder


----------



## Franz Degenhardt (2. Februar 2009)

statisch:

```
public enum Aufrufart {
	Kein_Parameter, Ein_Parameter, Zwei_Parameter, Viele_Parameter;
	public static Aufrufart gibAufrufart(String[] args) {
		if (args.length == 0)
			return Kein_Parameter;
		else if (args.length == 1)
			return Ein_Parameter;
		else if (args.length == 2)
			return Zwei_Parameter;
		else
			return Viele_Parameter;
	}
	public static void main(String[] args) {
		System.out.println(Aufrufart.gibAufrufart(args));
	}
}
```
nicht statisch, dafür unschönerer Aufruf:

```
public enum Aufrufart {
	Kein_Parameter, Ein_Parameter, Zwei_Parameter, Viele_Parameter;
	public Aufrufart gibAufrufart(String[] args) {
		if (args.length == 0)
			return Kein_Parameter;
		else if (args.length == 1)
			return Ein_Parameter;
		else if (args.length == 2)
			return Zwei_Parameter;
		else
			return Viele_Parameter;
	}
	public static void main(String[] args) {
		System.out.println(Aufrufart.Kein_Parameter.gibAufrufart(args));
	}
}
```


----------

