2012-12-20 16 views
9

誰かが以下のif文がfalseを評価する理由を説明できますか?Javaのinstanceof奇妙な振る舞い

public void addShapeToWhiteboard(PolyLine shape) 
{ 
    Window.alert("2"); 
    if(shape instanceof PolyLine) 
    { 
     Window.alert("3"); 
     this.whiteboard.add((PolyLine)shape); 
     Window.alert("3.5"); 
    }  
    this.whiteboard.draw(); 
    Window.alert("4"); 
} 

それは「ポリライン」オブジェクトにかかりますが、私は「4」の警告に続いて「2」の警告を取得し、それも可能ですか見当もつかないのでinstanceofはfalseを返します。

+1

私たちはこれを呼び出すコードを見ることができますか? – Woot4Moo

+0

詳細情報を提供してください: PolyLineの正確なクラスを提供できる場合は、役立つでしょう。それはjavafx.scene.shape.Polylineか別のクラスですか? このコードの呼び出し方法を教えてください。どんなオブジェクトが形として渡されていますか? –

答えて

13

多分シェイプはnullですか?そのような場合、instanceofはfalseを返します。

+0

ありがとう!私はそれを隠しました...私はクラスを印刷し、それは私にそれがnullであるという考えを却下させましたが、確かにそれは十分でした。 – user1919819

11

shapenullとして渡され、nullがいずれのクラスのインスタンスでもありません。