就像问题所述。理想情况下,答案应该是错误的,因为它将使用仅仅是参考比较的Object#相等。为什么等于不使用铸造等号方法?
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()
和实习工作。
相关主题:铸造GRAPHICS - >的Graphics2D
上述场景是上溯造型其中字符串是被downcasted到对象的情况。
然而,这是一个常见的用途实际上向下转换Graphics
是Graphics2D
使用升级版或没有在显卡本身存在的新方法。我们怎么能够上传而不是沮丧。
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?
}
}
你为什么说“...是一个上传的情况下,字符串被降频为对象”?这是一个错字吗?无论如何,你*无法确定''g''''' Graphics2D'没有测试它,或准备好'ClassCastException'。 Java仍将调用最具体的方法,而不管你称之为参考。 –