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
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