Boolean by Reference

TDO88

Bekanntes Mitglied
Hallo Zusammen,

in Java gibt es ja nun leider keine Pointer...
Ich schreibe gerade eine API, welche Parallel zu einem anderen Programm laufen soll und dem anderen Programm bestimmte Funktionen bereitstellen soll.
Für Datentypen wie int und double gibt es ja in Java IntByReference und DoubleByReference, wenn diese als "Pointer" an eine Methode übergeben werden sollen.
Ich habe jetzt aber eine Funktion, welche bspw. so aussieht:
Java:
public int GetKey(boolean F1, boolean F2, boolean F3, boolean F4)
{
      ...
      return ergebnis;
}

Meine Methode soll jetzt also etwas ausführen und der return Wert gibt der aufrufenden Methode zurück, ob die Methode korrekt abgearbeitet wurde. Jedoch muss ich der aufrufenden Methode die Werte für F1, F2, F3 und F4 ebenso liefern.
BooleanByReference gibt es ja leider nicht. Was gibt es für alternativen, bzw. wie kann ich das realisieren?

Danke und Gruß

TDO
 

VfL_Freak

Top Contributor
Moin,

bau Dir ein eigens Konstrukt, das die vier Werte repräsentiert und gib dies zurück!

Mal ganz lax:
Java:
public byte[] GetKey(boolean F1, boolean F2, boolean F3, boolean F4)
{
    byte[] erg = new byte[4];
    .....
    if( F1 )
        erg[0] = 0x1;
    else
        erg[0] = 0x0;
    if( F2 )
        erg[1] = 0x1;
    else
        erg[1] = 0x0;
    // usw.
  
      ...
      return erg;
}

Gruß Klaus
 

VfL_Freak

Top Contributor
Moin,
@VfL_Freak den Rückgabewert braucht er ja schon als ReturnCode. Natürlich kann man ein "int[]" zurückliefern -> wahr = 1, falsch = 0
ääh, das war doch die Frage, oder nicht?
Notfalls dann eben 5 Werte im Returncode ... :cool:

Wobei ich jetzt auch mal davon ausgegangen bin, dass sich die Werte F1-F4 innerhalb der Funktion ändern können - anderfalls wäre es ja eh' Quatsch!

Gruß Klaus
 

Tobse

Top Contributor
Ich vermute mal du willst einen C/C++-Code dieser art umsetzen:

C:
int doSth(bool *F1, bool *F2, bool *F3, bool *F4) {
    F1 = ...;
    F2 = ...;
    F3 = ...;
    F4 = ...;
}

In Java gibt es keine Pointer, weil die Java-Macher sie für zu Böse halten und weil Methodensignaturen wie diese äußerst unaussagekräftig sind (Stichwort self-documenting Code).

Die Java-Art das zu machen wäre folgende:
Diese 4 booleans bilden ja zusammen eine logische Einheit (vermute ich mal). Gib ihr einen Namen! (z.B. Key) und erstelle eine Klasse dafür:

Java:
class Key {
    private boolean f1;
    // ...
    private boolean f4;

    public Key(boolean f1, boolean f2, boolean f3, boolean f4) {
        this.f1 = f1;
        // ...
        this.f4 = f4;
    }

    public boolean getF1() {
        return this.f1;
    }

    // ...

    public boolean getF4() {
        return this.f4;
    }
}

In deiner Methode gibst du dann eine Instanz dieser klasse zurück. Einen möglichen Fehler bei der Ausführung signalisierst du mit einer Exception:

Java:
Key getKey() throws KeyNotAvailableException {
    boolean b1 = ...;
    // ...
    boolean b4 = ...;

    return new Key(b1, b2, b3, b4);
}

P.S.: Der Exception-Typ "KeyNotAvailableException" existiert nicht in Java und ist hier auch nur ein Beispiel (ich weiss ja nicht, welche Fehler in deiner Methode noch so auftreten können).
 

TDO88

Bekanntes Mitglied
Guten Morgen,

vielen Dank für eure Antworten.
Das ganze hat sich wahrscheinlich schon erledigt.
Und zwar soll mein Programm eine Schnittstelle zwischen einem Hauptprogramm und einer DLL sein.
Die DLL ist in standard C geschrieben -> d.h. es gibt dort auch nicht den Datentyp Bool.
In der DLL Dokumentation steht der Aufruf einer solchen Funktion als GetKey(BOOL *F1, BOOL *F2, usw).
Es hat sich jetzt aber herausgestellt, dass der Datentyp BOOL auch nur ein typedef eines Integers ist.
Somit kann ich für die DLL Funktionen mit dem IntByReference Typ aufrufen und es funktioniert.

Dennoch vielen Dank für eure Tipps! Vielleicht helfen Sie zu einem späteren Zeitpunkt nochmal :)

Gruß
TDO
 

Tobse

Top Contributor
Auch in diesem Fall würde ich dir empfehlen: kapsele das:

Java:
public Key getKey() throws KeyNotAvailableException {
    IntByReference f1 = ...; /* ... */ IntByReference f4 = ...;
    int err = cFunktion(f1, f2, f3, f4);

    if (err != 0) {
        // fehlerbehandlung
        throw new KeyNotAvailableException();
    }
   
    return new Key(f1 != 0, f2 != 0, f3 != 0, f4 != 0);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
J Compiler-Fehler Harshadzahlen mit Boolean Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
A Boolean Java Basics - Anfänger-Themen 5
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
J Boolean[] teilen Java Basics - Anfänger-Themen 13
S public static boolean Java Basics - Anfänger-Themen 4
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
L Überschriebene Boolean Statements Java Basics - Anfänger-Themen 2
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
Kirby.exe ArrayOutOfBoundsException bei boolean Array Java Basics - Anfänger-Themen 19
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
C Java Boolean reagiert nicht Java Basics - Anfänger-Themen 18
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
F Boolean Methode Wert ausgeben. Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
A Boolean in String Java Basics - Anfänger-Themen 2
S Operatoren Boolean Vergleichsoperator Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11
E ISBN Nummer mit boolean Java Basics - Anfänger-Themen 5
W In Methode boolean array zurückgeben Java Basics - Anfänger-Themen 3
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
T Methoden Boolean wird nicht gesetzt Java Basics - Anfänger-Themen 1
H boolean Array Problem Java Basics - Anfänger-Themen 7
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
O boolean Array Frage! Java Basics - Anfänger-Themen 4
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
W Interpreter-Fehler boolean nur eins darf wahr sein Java Basics - Anfänger-Themen 11
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
V Methode erstellen für ein Boolean Array Java Basics - Anfänger-Themen 13
L Wertebereich von boolean Java Basics - Anfänger-Themen 4
D Erklärung static boolean Java Basics - Anfänger-Themen 6
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
J Datentypen Boolean Refferenz Objekt Java Basics - Anfänger-Themen 2
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
A Boolean aus dem ActionlListener Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
M Sind solche boolean Anweisen empfehlenswert? Java Basics - Anfänger-Themen 3
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
J GUI per Boolean steuern Java Basics - Anfänger-Themen 3
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
K Viergewinnt - boolean Problem Java Basics - Anfänger-Themen 2
S Best Practice Boolean mit IF verbinden Java Basics - Anfänger-Themen 7
D Boolean mit String Java Basics - Anfänger-Themen 2
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
E 2 dimensionales Boolean Array Java Basics - Anfänger-Themen 5
B assertArrayEquals nicht für boolean[]? Java Basics - Anfänger-Themen 2
M !boolean das selbe wie boolean == false? Java Basics - Anfänger-Themen 3
L Boolean Methode wirft Fehler aus Java Basics - Anfänger-Themen 12
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
F Datentypen Frage nach Boolean Java Basics - Anfänger-Themen 11
C Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 20
B Boolean abfrage Java Basics - Anfänger-Themen 3
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
L Methoden Boolean-Methode Java Basics - Anfänger-Themen 16
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
M int & boolean Java Basics - Anfänger-Themen 12
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
R boolean, if-else Java Basics - Anfänger-Themen 7
J Variablen Boolean true "übersetzen" in String Java Basics - Anfänger-Themen 10
M Meldung "cannot convert flom boolean to boolean[]" Java Basics - Anfänger-Themen 3
S Name eines boolean ausgeben (nicht den Wert) Java Basics - Anfänger-Themen 43
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
D boolean te wird nicht verwendet Java Basics - Anfänger-Themen 2
M Bedingte Anweisung mit Boolean Java Basics - Anfänger-Themen 2
C cannot convert from int to boolean Java Basics - Anfänger-Themen 3
T Variablen boolean-wert wird nicht gesetzt Java Basics - Anfänger-Themen 6
A In Methode boolean ändern Java Basics - Anfänger-Themen 2
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben