String cannot be converted to String[]? Java?

1 Antwort

(...) deklarieren (...)

Deklarieren bedeutet nur, etwas bekannt machen.

Beispiel:

int someNumber;

Eine Wertzuweisung hingegen wäre eine Definition.

Ich kriege immer einen Fehler.

Das Feld richtung zeigt auf ein Array. Im Konstruktor versuchst du ihm einen String zuzuweisen, doch das geht nicht. Der Datentyp einer Variable lässt sich nicht nachträglich ändern.

Sinnvoller wäre es, zwei Felder anzulegen. Ein Feld beinhaltet Richtungen und ein Feld speichert eine (aktuelle) Richtung.

private String direction;
private String[] directions = new String[] { /* ... */ };

public Car() {
  this.direction = this.directions[0];
}

Technisch betrachtet würde das soweit funktionieren. Logisch betrachtet wäre es allerdings noch nicht optimal.

Zum einen wäre es besser, den Wertebereich gänzlich einzugrenzen, indem ein Enum definiert wird. Aktuell könnte man der direction-Variable auch irgendeinen anderen String zuweisen, der nicht im Array enthalten ist. An bestimmten Programmstellen würde dies sicherlich zu einem Ausnahmeverhalten führen.

Zum anderen würde ich die möglichen Richtungen nicht unbedingt als Eigenschaft / Element des Autos betrachten.

Im Endresultat könnte man es also folgendermaßen implementieren:

enum Direction {
  EAST("Osten"), SOUTH("Süden"), WEST("Westen"), NORTH("Norden");

  private String name;
  
  private Direction(String name) {
    this.name = name;
  }

  public String getName() {
    return this.name;
  }
}

class Car {
  private Direction direction;

  public Car() {
    this.direction = Direction.WEST;
    System.out.printf("Das Auto fährt gen %s.", this.direction.getName());
  }
}