dh-Materialien
Java Projekte
// JavaProject CallDemo


Die Übergabe von Eingabeparametern funktioniert auf unterschiedliche Weise. Dies wird anhand der überladenen Methode setValue der Klasse Calls demonstriert.

Handelt es sich beim Aufruf einer zweiparametrigen Version dieser Methode bei dem ersten Parameter beispielsweise um eine primitive Variable (in diesem Projekt: die zum Konstruktor Calls() gehörende Variable i vom Typ int), um eine Referenz auf ein Wrapper-Objekt (in diesem Projekt: j vom Typ Integer) oder um eine Referenz auf ein String-Objekt (in diesem Projekt: l), so sind i bzw. die durch j und l referenzierten Objekte nach dem Aufruf der entsprechenden Version von setValue unverändert. Ist der erste Parameter dagegen eine Referenzvariable etwa vom Typ Int oder vom Typ JLabel, ist dies nicht der Fall.

CallDemo

// CallDemo.java

import
javax.swing.*;


class Int {
    int n;

    Int(int n) {
        setValue(n);
    }

    void setValue(int v) {
        n = v;
    }

    int getValue() {
        return n;
    }
}


class Calls {

    void setvalue(float x) {
        x = 1f;
    }

    void setValue(int n, int v) { // Überladen von Methoden
        n = v;
        System.out.print(n + ", ");
    }

    void setValue(Integer n, int v) {
        n = v;
        System.out.print(n + ", ");
    }

    void setValue(Int n, int v) {
        n.setValue(v);
        System.out.print(n.getValue() + ", ");
    }

    void setValue(String str, String v) {
        str = new String(v);
        System.out.print(str + ", ");
    }

    void setValue(JLabel lbl, String v) {
        lbl.setText(v);
        System.out.println(lbl.getText());
        System.out.println();
    }

    void output(int a, Integer b, Int c, String d, JLabel e) {
        String s = a + ", ";
        s = s.concat(b + ", ");
        s = s.concat(c.getValue() + ", ");
        s = s.concat(d + ", ");
        s = s.concat(e.getText());
        System.out.println(s);
        System.out.println();
    }

    Calls() {
        float x = 0f;
        System.out.println(x);
        System.out.println();

        setValue(x);      // call by value
        System.out.println(x);
        System.out.println();

        int i = 3;
        Integer j = Integer.decode("3");
        Int k = new Int(3);
        String l = "3";
        JLabel m = new JLabel("3");
        output(i, j, k, l, m);

        setValue(i, 5);   // call by value
        setValue(j, 5);   // "call by value"
        setValue(k, 5);   // call by reference
        setValue(l, "5"); // "call by value"
        setValue(m, "5"); // call by reference

        output(i, j, k, l, m);
    }
}


class CallDemo {

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

Download CallDemo