Line2D.Double (Java Platform SE 8 )
Keywords: java.awt.geom.Line2D.Double class
Date: 2026-04-17

java.awt.geom

## Class Line2D.Double

- java.lang.Object
- - java.awt.geom.Line2D
  - - java.awt.geom.Line2D.Double

- All Implemented Interfaces:
    Shape, Serializable, Cloneable
  Enclosing class:
    Line2D

      public static class Line2D.Double
      extends Line2D
      implements Serializable

  A line segment specified with double coordinates.
  Since:
    1.2
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.awt.geom.Line2D

      `Line2D.Double, Line2D.Float`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `double` | `x1` The X coordinate of the start point of the line segment.
    `double` | `x2` The X coordinate of the end point of the line segment.
    `double` | `y1` The Y coordinate of the start point of the line segment.
    `double` | `y2` The Y coordinate of the end point of the line segment.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Double()` Constructs and initializes a Line with coordinates (0, 0) → (0, 0).
    `Double(double x1, double y1, double x2, double y2)` Constructs and initializes a `Line2D` from the specified coordinates.
    `Double(Point2D p1, Point2D p2)` Constructs and initializes a `Line2D` from the specified `Point2D` objects.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Rectangle2D` | `getBounds2D()` Returns a high precision and more accurate bounding box of the `Shape` than the `getBounds` method.
    `Point2D` | `getP1()` Returns the start `Point2D` of this `Line2D`.
    `Point2D` | `getP2()` Returns the end `Point2D` of this `Line2D`.
    `double` | `getX1()` Returns the X coordinate of the start point in double precision.
    `double` | `getX2()` Returns the X coordinate of the end point in double precision.
    `double` | `getY1()` Returns the Y coordinate of the start point in double precision.
    `double` | `getY2()` Returns the Y coordinate of the end point in double precision.
    `void` | `setLine(double x1, double y1, double x2, double y2)` Sets the location of the end points of this `Line2D` to the specified double coordinates.

    - ### Methods inherited from class java.awt.geom.Line2D

      `clone, contains, contains, contains, contains, getBounds, getPathIterator, getPathIterator, intersects, intersects, intersectsLine, intersectsLine, linesIntersect, ptLineDist, ptLineDist, ptLineDist, ptLineDistSq, ptLineDistSq, ptLineDistSq, ptSegDist, ptSegDist, ptSegDist, ptSegDistSq, ptSegDistSq, ptSegDistSq, relativeCCW, relativeCCW, relativeCCW, setLine, setLine`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### x1

          public double x1

      The X coordinate of the start point of the line segment.
      Since:
        1.2

    - #### y1

          public double y1

      The Y coordinate of the start point of the line segment.
      Since:
        1.2

    - #### x2

          public double x2

      The X coordinate of the end point of the line segment.
      Since:
        1.2

    - #### y2

          public double y2

      The Y coordinate of the end point of the line segment.
      Since:
        1.2

  - ### Constructor Detail

    - #### Double

          public Double()

      Constructs and initializes a Line with coordinates (0, 0) → (0, 0).
      Since:
        1.2

    - #### Double

          public Double(double x1,
                        double y1,
                        double x2,
                        double y2)

      Constructs and initializes a `Line2D` from the specified coordinates.
      Parameters:
        `x1` - the X coordinate of the start point
        `y1` - the Y coordinate of the start point
        `x2` - the X coordinate of the end point
        `y2` - the Y coordinate of the end point
      Since:
        1.2

    - #### Double

          public Double(Point2D p1,
                        Point2D p2)

      Constructs and initializes a `Line2D` from the specified `Point2D` objects.
      Parameters:
        `p1` - the start `Point2D` of this line segment
        `p2` - the end `Point2D` of this line segment
      Since:
        1.2

  - ### Method Detail

    - #### getX1

          public double getX1()

      Returns the X coordinate of the start point in double precision.
      Specified by:
        `getX1` in class `Line2D`
      Returns:
        the X coordinate of the start point of this `Line2D` object.
      Since:
        1.2

    - #### getY1

          public double getY1()

      Returns the Y coordinate of the start point in double precision.
      Specified by:
        `getY1` in class `Line2D`
      Returns:
        the Y coordinate of the start point of this `Line2D` object.
      Since:
        1.2

    - #### getP1

          public Point2D getP1()

      Returns the start `Point2D` of this `Line2D`.
      Specified by:
        `getP1` in class `Line2D`
      Returns:
        the start `Point2D` of this `Line2D`.
      Since:
        1.2

    - #### getX2

          public double getX2()

      Returns the X coordinate of the end point in double precision.
      Specified by:
        `getX2` in class `Line2D`
      Returns:
        the X coordinate of the end point of this `Line2D` object.
      Since:
        1.2

    - #### getY2

          public double getY2()

      Returns the Y coordinate of the end point in double precision.
      Specified by:
        `getY2` in class `Line2D`
      Returns:
        the Y coordinate of the end point of this `Line2D` object.
      Since:
        1.2

    - #### getP2

          public Point2D getP2()

      Returns the end `Point2D` of this `Line2D`.
      Specified by:
        `getP2` in class `Line2D`
      Returns:
        the end `Point2D` of this `Line2D`.
      Since:
        1.2

    - #### setLine

          public void setLine(double x1,
                              double y1,
                              double x2,
                              double y2)

      Sets the location of the end points of this `Line2D` to the specified double coordinates.
      Specified by:
        `setLine` in class `Line2D`
      Parameters:
        `x1` - the X coordinate of the start point
        `y1` - the Y coordinate of the start point
        `x2` - the X coordinate of the end point
        `y2` - the Y coordinate of the end point
      Since:
        1.2

    - #### getBounds2D

          public Rectangle2D getBounds2D()

      Returns a high precision and more accurate bounding box of the `Shape` than the `getBounds` method. Note that there is no guarantee that the returned `Rectangle2D` is the smallest bounding box that encloses the `Shape`, only that the `Shape` lies entirely within the indicated `Rectangle2D`. The bounding box returned by this method is usually tighter than that returned by the `getBounds` method and never fails due to overflow problems since the return value can be an instance of the `Rectangle2D` that uses double precision values to store the dimensions.

      Note that the definition of insideness can lead to situations where points on the defining outline of the `shape` may not be considered contained in the returned `bounds` object, but only in cases where those points are also not considered contained in the original `shape`.

      If a `point` is inside the `shape` according to the `contains(point)` method, then it must be inside the returned `Rectangle2D` bounds object according to the `contains(point)` method of the `bounds`. Specifically:

      `shape.contains(p)` requires `bounds.contains(p)`

      If a `point` is not inside the `shape`, then it might still be contained in the `bounds` object:

      `bounds.contains(p)` does not imply `shape.contains(p)`

      Specified by:
        `getBounds2D` in interface `Shape`
      Returns:
        an instance of `Rectangle2D` that is a high-precision bounding box of the `Shape`.
      Since:
        1.2
      See Also:
        `Shape.getBounds()`

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.