A data point: I was browsing around Swing and I noticed '''public Rectangle getBounds(Rectangle rv)''' ''Store the bounds of this component into "return value" rv and return rv. If rv is null a new Rectangle is allocated. This version of getBounds() is useful if the caller wants to avoid allocating a new Rectangle object on the heap.'' -- WilliamGrosso ---- How about this variation: Point getPoint(Point p) { if (p == null) { p = new Point(); } p.x = myXvalue; p.y = myYvalue; return p; } This lets you have the convenience of both worlds. You can pass "null" if you want a new Point to be created, or non-null if you want to reuse an existing Point. I use this method a lot for returning 3D coordinates in my program. class Vertex { private double x, y, z; // Vertex coordinate double[] getCoordinate(double[] c) { if (c == null) { c = new double[3]; } c[0] = x; c[1] = y; c[2] = z; return c; } } Then I can do: double[] c = null; for (int i=0; i