I have made a Point2D.Double wrapper so I can add my own functionality (like a dominate method) and alter some (like toString) and control some (like not having public access to x and y).
Point class:
public class Point implements Serializable {
private final Point2D.Double point2D;
public Point(double x, double y) {
this.point2D = new Point2D.Double(x, y);
}
public Point(String line, String delimiter) {
line = line.trim();
String[] lineArray = line.split(delimiter);
double x = Double.parseDouble(lineArray[0]);
double y = Double.parseDouble(lineArray[1]);
this.point2D = new Point2D.Double(x, y);
}
public boolean dominates(Point point) {
return (this.getX() <= point.getX() && this.getY() < point.getY())
|| (this.getY() <= point.getY() && this.getX() < point.getX());
}
public double getX() {
return point2D.getX();
}
public double getY() {
return point2D.getY();
}
@Override
public boolean equals(Object o) {
return point2D.equals(o);
}
@Override
public int hashCode() {
return point2D.hashCode();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append('(').append(point2D.getX()).append(", ").append(point2D.getY()).append(')');
return builder.toString();
}
}
extends Point2D.Double? \$\endgroup\$equalsandhashcodein case of wrapper, possible other ways I can do this that are cleaner. \$\endgroup\$