Подтвердить что ты не робот

Прямоугольник и Rectangle2D Разница

В настоящее время я использую Rectangle и Rectangle2D (Rectangle2D.Double).

Мне было интересно, что я буду принимать во внимание при выборе правильного типа данных? Я не вижу никакой очевидной разницы, кроме Rectangle (подкласс Rectangle2D) имеют больше функций API.

Спасибо.

4b9b3361

Ответ 1

Rectangle использует int-координаты. Rectangle2D - абстрактный класс, который не заботится, если вы используете координаты int, double или float.

Если вам нужна большая точность double и float, вам нужно будет использовать Rectangle2D.

Rectangle2D - базовый класс, поэтому, если вы пишете код, который работает на прямоугольных фигурах абстрактным образом, перейдите к Rectangle2D и назначьте его так:

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

или

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

Если вы знаете, что собираетесь работать только с ints, вы можете использовать Rectangle полностью.

Можно сказать, что Rectangle следует называть Rectangle2D.Integer. Но это не совсем так, потому что, например, Прямоугольник - единственный из трех, который реализует сериализуемый интерфейс.

Как прокомментировал skaffman, это немного устаревшая проблема.

Ответ 2

Класс Rectangle расширяет Rectangle2D, это означает, что вы всегда можете преобразовать Rectangle в Rectangle2D, но, наоборот, вы можете использовать Rectangle2D.getBounds().