Parameter-Übergabe bei Klassen und Methoden

Curtis_MC

Mitglied
Hallo zusammen,

Ich habe eine Frage zur Weitergabe von Parameter einer Methode. Ich habe eine Instanz Maze mit der Methode boolean isWall(int direction). Die Instanz beinhaltet darüberhinaus eine final class Direction mit den beiden Variable RIGHT und LEFT.
Dazu mein Code:
Java:
public interface Maze {
     final class Direction {
         public static final int RIGHT = 1;
         public static final int LEFT = 2;
     }
boolean isWall(int direction);
}
In einer anderen Klasse, Explorer, möchte ich in der Methode istPlatz(Maze garten) auf die Methode isWall() zugreifen.
Java:
public class Explorer {

public static boolean istPlatz(Maze garten){
  /* 1. Möglichkeit */  if(garten.isWall(Maze.Direction.RIGHT & Maze.Direction.LEFT)){...}
 /* oder 2. Möglichkeit */  if(garten.isWall(Maze.Direction.Right) & garten.isWall(Maze.Direction.LEFT){...}
}
}
Meine Frage: Kann ich die Parameter mit beiden Möglichkeiten übergeben oder kann ich nur die 2. Möglichkeit nutzen? Bei der 1. Möglichkeit spare ich mit dadurch sehr viel Schreibarbeit. Ich möchte nämlich durch das "&" beide directions (Rechts und Links) in einer if-Bedingung überprüfen.
Danke für jeden Hinweis :).

PS: Als Anfänger habe ich evtl. nicht die richtigen Begriffe verwendet: sorry dafür.
 

Curtis_MC

Mitglied
Alles klar vielen Dank für die schnelle Antwort.
Stimmt, du hast recht. Ich war mir unsicher ob & oder && aber Letzteres macht mehr Sinn.
Wie hast du das &-Symbol hervorgehoben? (Bestimmt nützlich für zukünftige Fragen) danke
 

mihe7

Top Contributor
Du kannst natürlich mittels Bit-Operationen int-Werte verknüpfen, dann aber mit | und nicht mit &. D. h. theoretisch würde das funktionieren, was Du vorhast, das ist aber äußerst low-level und für den Fall auch unpraktisch, außer Du hast Deine Wege im Labyrinth schon derart kodiert.

Besser: verwende eine Methode isWall(Direction ... dir), dann kannst Du mehrere Direction-Objekte oder ein Direction-Array als Parameter übergeben. Für Direction böte sich ein enum an.
 

httpdigest

Top Contributor
Auch, wenn ich @mihe7 natürlich absolut Recht gebe, was die Vermeidung von Low-Leveligkeit? in Java angeht und sauberer und verständlicher Code in den allermeisten Fällen absoluten Vorrang vor vielleicht den einen oder anderen Microsekunden Performancegewinn hat, so finde ich es ab und an schade, dass Dinge wie Bitmasken und Bitshifts, die in C allgegenwärtig sind, bei Java-Entwickler meist auf Unkenntnis stoßen. :)
Ich erinnere noch an eine Situation, da hatte ich mal keine Enums verwendet, sondern die typischen "power-of-two" Bitshifts (1<<0, 1<<1, 1<<2, ...) mit Bit-UND und -ODER um Set-Operationen auf diesen "Enums" zu berechnen. Drei Java-Entwickler saßen anschließend rätselnd vor dem Code... ja, ich hätte wohl lieber Enums und das gute EnumSet verwenden sollen. :)
 

Curtis_MC

Mitglied
@mihe7 vielen Dank für den Tipp.
Besser: verwende eine Methode isWall(Direction ... dir), dann kannst Du mehrere Direction-Objekte oder ein Direction-Array als Parameter übergeben. Für Direction böte sich ein enum an.
Leider sind diese Methode und die Typen für Direction vorgegeben und ich darf sie nicht ändern.
 

mihe7

Top Contributor
Leider sind diese Methode und die Typen für Direction vorgegeben und ich darf sie nicht ändern.
Na, und?

Variante 1: Methode in Explorer
Java:
private boolean hasWall(int ... directions) {
    for (int dir : directions) {
        if (garten.isWall(dir)) {
            return true;
        }
    }
    return false;
}
bzw. als statische Variante:
Java:
private static boolean hasWall(Maze garten, int ... directions) {
    for (int dir : directions) {
        if (garten.isWall(dir)) {
            return true;
        }
    }
    return false;
}

Variante 2: als Maze-Decorator
Java:
class AmazingMaze implements Maze {
    private final Maze maze;

    public AmazingMaze(Maze maze) { this.maze = maze; }
    
    public boolean isWall(int dir) { return maze.isWall(dir); }

    public boolean hasWall(int ... directions) {
        for (int dir : directions) {
            if (isWall(dir)) {
                return true;
            }
        }
        return false;
    }
}
Verwendung:
Java:
AmazingMaze maze = new AmazingMaze(garten);
if (maze.hasWall(Maze.Direction.LEFT, Maze.Direction.RIGHT)) {
    ...
}
 

Curtis_MC

Mitglied
@mihe7 vielen Dank für die Alternativen. Variante 2 finde ich am "schönsten". Leider ist das für meinen Anwendungsfall dann doch zu kompliziert, sodass ich letztendlich bei meiner 2. Möglichkeit geblieben bin. Trotzdem Danke ;)
 

Curtis_MC

Mitglied
Ich hätte doch nochmal eine ähnliche Frage.
Kann ich in einer If-Bedingung mehrere Möglichkeiten von &-Kombinationen durch || trennen? Bsp.:
Java:
if (aktView == 2 & nextStep == 1 || aktView == 1 & nextStep == 4 || aktView == 3 & nextStep = 2 || aktView == 4 & nextStep == 3){
    x=x-1;
}

Ich möchte also x um 1 verringern, sobald eine der &-Kombinationen true ist.
Geht das?
Danke schonmal :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Klassen Parameter Übergabe Java Basics - Anfänger-Themen 12
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
R Beiß mir die Zähne aus an der Request-Parameter-Übergabe! Java Basics - Anfänger-Themen 10
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
X Default Parameter Java Basics - Anfänger-Themen 20
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
P Parameter auf Datenformat überprüfen Java Basics - Anfänger-Themen 5
S Hamster Simulator rechnen lernen Parameter int Java Basics - Anfänger-Themen 6
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
W Parameter solange addieren bis 13 auftaucht Java Basics - Anfänger-Themen 11
L OOP Parameter mit der Draw-Methode übergeben Java Basics - Anfänger-Themen 11
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
V Unbekannte Parameter Java Basics - Anfänger-Themen 1
J Input/Output Input als Parameter an Methoden übergeben Java Basics - Anfänger-Themen 23
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
A festgelegte Parameter Java Basics - Anfänger-Themen 11
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
P Variablen Optionaler Parameter auf der Kommandozeile Java Basics - Anfänger-Themen 12
S Variable Parameter Java Basics - Anfänger-Themen 5
L Variablen Parameter bekommen Java Basics - Anfänger-Themen 13
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
K Klassenmethode mit übergebenen Parameter speichern Java Basics - Anfänger-Themen 7
I BigDecimal als Parameter verwenden Java Basics - Anfänger-Themen 3
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
J Programm was üer Runtime.getRuntime gestartet wird erkennt String Parameter nicht Java Basics - Anfänger-Themen 0
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
P Operatoren Parameter nicht auf null geprüft? Java Basics - Anfänger-Themen 16
D Name eines JMenue als Parameter übergeben Java Basics - Anfänger-Themen 20
K Dynamischen Supplier für Parameter Java Basics - Anfänger-Themen 12
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
M Methode mit Parameter Java Basics - Anfänger-Themen 4
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
A Erste Schritte Methoden mit Parameter Java Basics - Anfänger-Themen 2
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
N Klassen Klassen zwingende Parameter mitteilen Java Basics - Anfänger-Themen 4
L Methoden Methode Parameter vertauschen? Java Basics - Anfänger-Themen 3
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
A Methoden Parameter optionalisieren möglich? - Wie? Java Basics - Anfänger-Themen 19
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
F Methoden: Referenzvariable als Parameter Java Basics - Anfänger-Themen 4
J HttpGet Parameter mitgeben Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
T Klasse von erfahren wenn Obertyp Parameter ist Java Basics - Anfänger-Themen 6
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
M Klasse als Parameter übergeben Java Basics - Anfänger-Themen 7
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
V Methoden key value Parameter Java Basics - Anfänger-Themen 11
J Drucker parameter ändern Java Basics - Anfänger-Themen 9
F trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 0
O Basisklassen als Methoden-Parameter ähnlich, wie in C++ ? Java Basics - Anfänger-Themen 6
D GregorianCalendar als Parameter Java Basics - Anfänger-Themen 2
M Parameter von Konstruktor, der Superklassen-Konstruktor aufruft Java Basics - Anfänger-Themen 2
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
D Enum als Parameter Java Basics - Anfänger-Themen 6
T In main-Methode Parameter übergeben Java Basics - Anfänger-Themen 3
M Methode als Parameter übergeben Java Basics - Anfänger-Themen 16
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Parameter in Eigner Konsole Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben