"Graphics2D g2d = (Graphics2D) g;" 是什么意思,下面代码段中这一行的意义是什么?

What does "Graphics2D g2d = (Graphics2D) g;" mean and what is the significance of this line in the following code segment?

public void paint(Graphics g) 
{
    Graphics2D g2d = (Graphics2D) g;
    g2d.setColor(Color.RED);
    g2d.fillOval(0, 0, 30, 30);
    g2d.drawOval(0, 50, 30, 30);        
    g2d.fillRect(50, 0, 30, 30);
    g2d.drawRect(50, 50, 30, 30);

    g2d.draw(new Ellipse2D.Double(0, 100, 30, 30));
}

嗯,我是 JPanel class 的新手,我有点困惑。 gGraphics class 的对象。那么,(Graphics2D) g 是什么意思,因为在这一行中 g 似乎是一个方法而不是一个对象?此外,谁能告诉我为什么 Graphics2D class 不能实例化?

g 是变量,不是方法。它在方法声明中声明,因为它是方法的参数(即,无论何时调用函数都需要传递它)。

(Graphics2D) 转换允许您将 g 视为 Graphics2D 对象。 See here 获取更多关于转换的信息。

您不能启动 Graphics2D,因为它是一个 abstract class,这意味着它有一些特定于实现的方法。