Rectangle и Rectangle2D Разница - PullRequest
15 голосов
/ 06 февраля 2010

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

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

Спасибо.

Ответы [ 2 ]

13 голосов
/ 06 февраля 2010

Прямоугольник использует координаты 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)

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

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

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

4 голосов
/ 31 января 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...