<p>Assuming we always use a Sun JVM (say, 1.5+), is it always safe to cast a Graphics reference to Graphics2D?  </p>

<p>I haven't seen it cause any problems yet and, to my understanding, the Graphics class is legacy code but the Java designers didn't want to change the interfaces for Swing and AWT classes in order to preserver backwards compatibility.</p>

According to the discussion
here
, it
is always safe to cast from
```
Graphics
```
to
```
Graphics2D
```
. However I am not able to quickly find the official Sun statement on this.
The reason it is valid to cast from
  Graphics to Graphics2D, is because Sun
  have said that all Graphics objects
  returned by the API in Java 1.2 or
  above will be a subclass of
  Graphics2D.
Another hint
here
with the same conclusion.
Graphics Object can always be cast
  Graphics2D g2d = (Graphics2D)g;