Hallo an alle,
habe folgendes Problem: Kann ein Integer einem Integer nicht zuweisen.
Warum ist es so? Die Konsolenausgabe bestätigt doch, dass die beiden Taschen der
Person eine Variable von Typ Integer speichern, also auch von Typ Integer sind?!
Stehe ziemlich auf dem Schlauch..
edit: wenn ich es nach Int caste, dann geht es. Jedoch dachte ich, dass hier Integer automatisch mitübernommen wird. Wo denke ich falsch?
int links = (int) person.getLeftPocket().getValue();
int rechts = (int) person.getRightPocket().getValue();
habe folgendes Problem: Kann ein Integer einem Integer nicht zuweisen.
Warum ist es so? Die Konsolenausgabe bestätigt doch, dass die beiden Taschen der
Person eine Variable von Typ Integer speichern, also auch von Typ Integer sind?!
Stehe ziemlich auf dem Schlauch..
Java:
public class JIAEI_Generics
{
public static void main(String[] args)
{
Person person = new Person();
Pocket<Integer> pocketA = new Pocket<>(20);
Pocket<Integer> pocketB = new Pocket<>(2);
person.setLeftPocket(pocketA);
person.setRightPocket(pocketB);
System.out.println("Links: " + person.getLeftPocket().getValue().getClass());
System.out.println("Rechts: " + person.getRightPocket().getValue().getClass());
/** Konsolenausgabe */
Links: class java.lang.Integer
Rechts: class java.lang.Integer
int links = person.getLeftPocket().getValue(); //Object cannot be converted to int
int rechts = person.getRightPocket().getValue(); //Object cannot be converted to int
}
}
Java:
public class Person
{
private String name;
private Pocket leftPocket;
private Pocket rightPocket;
public String getName()
{
return name;
}
public Pocket getLeftPocket()
{
return leftPocket;
}
public Pocket getRightPocket()
{
return rightPocket;
}
public void setName(String name)
{
this.name = name;
}
public void setLeftPocket(Pocket leftPocket)
{
this.leftPocket = leftPocket;
}
public void setRightPocket(Pocket rightPocket)
{
this.rightPocket = rightPocket;
}
}
Java:
public class Pocket<T>
{
private T value;
public Pocket()
{
}
protected Pocket(T value)
{
this.value = value;
}
public T getValue()
{
return value;
}
public void setValue(T value)
{
this.value = value;
}
protected boolean isEmpty()
{
return this.value == null;
}
protected void empty()
{
this.value = null;
}
}
edit: wenn ich es nach Int caste, dann geht es. Jedoch dachte ich, dass hier Integer automatisch mitübernommen wird. Wo denke ich falsch?
int links = (int) person.getLeftPocket().getValue();
int rechts = (int) person.getRightPocket().getValue();