Explicit casting Point2D.Double

Adrian

Mitglied
Ist zwar nur eine Stilfrage, aber im folgenden Code, erzeugt das casten zu Point2D Ungenauigkeit (siehe Kommentar).
Der Versuch, zu Point2D.Double zu casten
Point2D.Double p2d = (Point2D.Double)ep;
erzeugt Kompilerfehler. Wie kann ich das Paket Point2D besser verstehen?
[Java]
import java.awt.Point;
import java.awt.geom.Point2D;
import java.awt.geom.AffineTransform;

public class ExampleP2D{
public static AffineTransform tx = new AffineTransform();
public static Point p = new Point(123,4567);


public static Point2D scale(Point ep){
Point2D p2d = (Point2D)ep;
tx.scale(.1234,.56789);
tx.transform(p2d,p2d);
return p2d;
}

public static void main(String[]args){
System.out.println(scale(p)); //output: java.awt.Point[x=15,y=2594]
}
}
[/code]
 

eRaaaa

Top Contributor
mhm? du transformierst den punkt doch noch ?! an sich geht das schon wenn ich dich jetzt nicht falsch verstehe:
Java:
	Point p = new Point(123, 4567);
	Point2D p2d = (Point2D) p;
	System.out.println(p2d);
 

Ebenius

Top Contributor
Point erbt von Point2D. Point2D.Double erbt auch von Point2D. Aber Point erbt nicht von Point2D.Double. Deswegen schlägt der Cast fehl.

Wieso erzeugst Du nicht einen neuen Point2D.Double aus dem Point und skalierst diesen?
Java:
final Point2D.Double p2d = new Point2D.Double();
tx.setToScale(.1234, .56789);
tx.transform(ep, p2d);
return p2d;
Ebenius
 

Adrian

Mitglied
Point erbt von Point2D. Point2D.Double erbt auch von Point2D. Aber Point erbt nicht von Point2D.Double. Deswegen schlägt der Cast fehl.

Ok, jetzt versteh ich wenigstens, warum der cast fehlschlägt. Natürlich suchte ich nach einer Möglichkeit, keinen neuen Point erzeugen zu müssen. Zum einen wegen der Eleganz, zum Anderen, um dann flexibel einen Point2D.Float bei Bedarf zu erzeugen.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben