Hallo Zusammen
Ich habe eine einfache generische Klasse welche eine Koordinate in einem beliebigen Number Datentyp representiert:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class XY<T extends Number> {
public T x;
public T y;
public XY(T x, T y){
this.x = x;
this.y = y;
}
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
|
Dann habe ich noch eine Klasse von der alle meine Gui Elemente erben (hier vereinfacht dargestellt):
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
public class GuiElement<T> {
private XY<Integer> size;
private XY<Integer> pos;
private XY<Integer> padding;
private GuiElement parent; // Übergeordnetes Gui Element
// ...
public XY<Integer> getAbsolutPos(){
int x;
int y;
if(this.parent != null){
x = (Integer)this.parent.getPos().x + this.getPos().x + this.padding.x; // <-----------
y = (Integer)this.parent.getPos().y + this.getPos().y + this.padding.y;
} else {
x = this.getPos().x + this.padding.x;
y = this.getPos().y + this.padding.y;
}
return new XY<Integer>(x,y);
}
public XY<Integer> getPos() {
return pos;
}
// ...
|
Jetzt zu meiner Frage:
Warum ist an der Markierten stelle dieser Cast notwendig bzw. warum bekomme ich nicht direkt einen Integer durch "this.parent.getPos().x" sondern ein Number Objekt ?