就像问题所说的那样。理想情况下,答案应该是错误的,因为它将使用 Object#equal ,它只是参考比较。
String cat = new String("cat");
String cat2 = new String("cat");
System.out.println(((Object) cat).equals((Object) cat2)); // returns true, but should be false
这与多态性有关。我知道如何equals()
和实习工作。
相关主题:铸造图形 -> GRAPHICS2D
上述场景是向上转换的情况,其中String 被向下转换为 Object。
然而,一个常见的用法实际上是向下转换 Graphics
为Graphics2D
使用 Graphics 本身不存在的升级或新方法。为什么我们可以向上而不是向下。
import java.awt.*;
import javax.swing.*;
public class Example extends JPanel {
public static void main (String []args){
JFrame frame = new JFrame();
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g; // How can we be sure the informal
g2.drawLine(0,0, getWidth(), getHeight()); // parameter contains those methods?
}
}