Objekte addieren

merv

Mitglied
Hallo,
eine Frage wie kann man zwei Objekte addieren bzw. subtrahieren ?
z.B hier :
Code:
public Node getChildNode(Node node, Move move) {
        Integer[] new_state = new Integer[2];

        new_state[0] = (Integer) node.state[0];
        new_state[1] = (Integer) node.state[1];

        if (move != null) {
            if (move.to == "x") {
                new_state[0] = node.state[0]+ move.quantity;
            }
            if (move.to == "y") {
                new_state[1] = node.state[1] + move.quantity;
            }
            if (move.from == "x") {
                new_state[0] = node.state[0] - move.quantity;
            }
            if (move.from == "y") {
                new_state[1] = node.state[1] - move.quantity;
            }
        }
        Node new_node = new Node(new_state, move, node);
        return new_node;
    }
?
node.state und move.quantity sind vom Typ Object.

Danke !
 

mrBrown

Super-Moderator
Mitarbeiter
Gar nicht.

Addieren kannst du so nur Zahlen.
Entweder sind das also Zahlen, dann müssest du vorher passend casten (was du mit node.state[0] auch machst) - oder es geht nicht.
 

Thallius

Top Contributor
Der Code ist auch Mumpitz. Eine Node ist niemals eine Zahl. Sie kann ein Attribut Zahl haben, aber dann wäre es schon keine reine Node mehr sondern bereits ein Object das von der Klasse Node ableitet. Eine Node hat nichts anderes zu beinhalten als die für eine Liste notwendigen Verknüpfungen. Deshalb heist sie Node.
 

mrBrown

Super-Moderator
Mitarbeiter
Der Code ist auch Mumpitz. Eine Node ist niemals eine Zahl. Sie kann ein Attribut Zahl haben, aber dann wäre es schon keine reine Node mehr sondern bereits ein Object das von der Klasse Node ableitet. Eine Node hat nichts anderes zu beinhalten als die für eine Liste notwendigen Verknüpfungen. Deshalb heist sie Node.

Das ist auch Mumpitz.
 

JCODA

Top Contributor
Kann es sein, dass Move vielleicht generisch ist, d.h. vielleicht sollte da so etwas wie Move<Integer> stehen o.Ä. ?
 

mrBrown

Super-Moderator
Mitarbeiter
Wie immer hast du natürlich recht
Wäre irgendwie ziemlich unnötig, sich selbst als im Unrecht zu sehe, und trotzdem zu posten...
...wie immer, wenn man nicht mit deiner Meinung konform geht. Ich begründe meine immerhin: ;)

Eine Node ist niemals eine Zahl
Wird auch nicht so benutzt.
Sie kann ein Attribut Zahl haben
So wie in obigem Code.
aber dann wäre es schon keine reine Node mehr
Wer definiert eigentlich, was ein "Node" darf und was nicht?
sondern bereits ein Object das von der Klasse Node ableitet.
Meinst du eine Instanz der Klasse Node der eine Instanz einer Subklasse von Node?
Eine Node hat nichts anderes zu beinhalten als die für eine Liste notwendigen Verknüpfungen.
Genau, so wie der Node in einem Baum nur eine Liste darstellt oder Nodes in XML nur Listenverknüpfungen sind...

Deshalb heist sie Node
Das ist ein so generischer Name, dass er absolut nichts über den Kontext aussagt.
Außer vielleicht, das sie irgendwie verknüpft und Teile eines große ganzen sind.

Aber vielleicht ist Node.js auch nur eine Liste ¯\_(ツ)_/¯


(Abgesehen davon entspricht der Node oben zum Großteil deiner "Definition": Er enthält die Verknüpfung und den generischen Inhalt (State und Move). Oder darf ein Node keinen Inhalt haben? (Dann wärs aber ziemlich nutzlos...))
 

merv

Mitglied
Code:
public class Node {

    //public int[] state;
    public Object [] state;

    public Node parent;

    public Move move;

    public Node(Object [] initial_state, Move move, Node parent) {
        this.state =  initial_state;
        this.move = move;
        this.parent = parent;
    }
}

ich wollt state nicht als int array speichern und sozusagen 'genereller' machen. Sorry ich bin erst ein Anfänger in Java ...
 

Neue Themen


Oben