为什么这样做有效?(Java,图形对象)
这是我的密码:为什么这样做有效?(Java,图形对象),java,text,graphics,instance,antialiasing,Java,Text,Graphics,Instance,Antialiasing,这是我的密码: public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g.drawString("This is my string", 200, 200); } 这是正确的;文本显示为抗锯齿。然而
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.drawString("This is my string", 200, 200);
}
这是正确的;文本显示为抗锯齿。然而,为什么它会起作用?文本是由g对象绘制的,但就我所见,g2对象的抗锯齿已打开。g对象是如何得到它的
Graphics2D g2 = (Graphics2D) g;
g和g2都是对同一对象(g)的引用。g将对象称为Graphics2D,而g2将对象称为Graphics2D
g
和g2
都是对同一对象的引用。在运行时,引用的类型实际上并不重要——您可以让该对象运行一个方法 因为您将g2
作为对g
对象的引用。g
和g2
是同一个对象,所以您刚刚将其铸造。谢谢。所以,当你将一个对象投射到另一个对象时,你没有创建任何新对象?你实际上只是在“投射”对对象的引用?这是正确的。这里的对象(g)既是图形又是图形2d。根据具体情况,您可能需要将其用作图形或图形2D。