2010-02-06 20 views
13

Actualmente, utilizo Rectángulo y Rectángulo2D (Rectángulo2D.Doble) intercambio.Rectángulo y Rectángulo2D Diferencia

Me preguntaba ¿cuál es la consideración que debo tener en cuenta, al elegir el tipo de datos correcto? No veo ninguna diferencia obvia, excepto que el Rectángulo (subclase de Rectangle2D) tiene más funciones de API.

Gracias.

+5

Es un legado. 'Rectangle2D' se agregó en una versión posterior de Java que' Rectangle', y el resultado es el intento fallido de Sun de resolverlo. – skaffman

Respuesta

11

Rectángulo utiliza las coordenadas int. Rectangle2D es una clase abstracta a la que no le importa si está utilizando las coordenadas int, double o float.

Si necesita la mayor precisión de doble y flotación, tendrá que ir con Rectangle2D.

Rectangle2D es la clase base, por lo que si usted está escribiendo código que funciona con formas rectangulares en forma abstracta, vaya para Rectangle2D, y asignarla así:

Rectangle2D rect = new Rectangle2D.Double(double, double, double, double); 

o

Rectangle2D rect = new Rectangle(int, int, int, int) 

Si sabe que solo va a tratar con enteros, puede usar Rectángulo todo el camino.

Puede decir que Rectangle se debe llamar Rectangle2D.Integer. Pero eso tampoco es todo, porque p. Rectangle es el único de los tres que implementa la interfaz serializable.

Como comentó skaffman, es un problema heredado. clase

3

rectángulo se extiende Rectangle2D, esto significa que siempre se puede convertir un formato rectangular de Rectangle2D, sino por el contrario, se podría utilizar Rectangle2D.getBounds().

Cuestiones relacionadas