如果Graphics2D中还包含所有Graphics,为什么它们不默认为Graphics2D?
我似乎几乎总是在所有绘画替代中都投射/创建Graphics2D对象.
@Override
public void paintComponent(Graphics paramGraphics){
super.paintComponent(paramGraphics);
Graphics2D g = (Graphics2D) paramGraphics.create();
// RenderingHints etc.
}
解决方法:
与仅支持图形的AWT的兼容性. Swing的组件扩展了java.awt.Component,它具有仅返回Graphics对象的getGraphics方法.在创建Swing时(Java 1.1 / 1.2),Java不知道协方差.即使返回类型不是方法签名的一部分,也不允许使用具有不同(原始子类)返回类型的重写方法.使用当今的语言功能,这是允许的,并且可能会以不同的方式完成,即返回类型将更改为Graphics2D.那时,唯一的方法是要么添加新方法(如getGraphics2D),要么完全破坏与AWT的轻松互操作性.