2012-12-20 37 views
9

Ai đó có thể giải thích tại sao câu lệnh if dưới đây đánh giá sai?Ví dụ của Java về hành vi lẻ

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"); 
} 

phải mất trong một đối tượng "polyline", nhưng instanceof trả về false vì tôi nhận được một cảnh báo của "2" tiếp theo là một cảnh báo của "4" và không có đầu mối làm thế nào nó thậm chí có thể.

+1

chúng ta có thể thấy mã gọi ra điều này không? – Woot4Moo

+0

Vui lòng cung cấp thêm thông tin: Nếu bạn có thể cung cấp lớp chính xác của PolyLine, nó sẽ giúp ích; là nó javafx.scene.shape.Polyline hoặc lớp khác? Chỉ cho chúng tôi cách mã này được gọi; đối tượng nào đang được chuyển thành hình dạng? –

Trả lời

13

Có thể hình dạng là rỗng? instanceof trả về false trong trường hợp này.

+0

Cảm ơn! Tôi đã nói ra điều đó ... Tôi đã in ra lớp, và điều đó khiến tôi gạt bỏ ý tưởng về nó là vô giá trị, nhưng chắc chắn là đủ rồi. – user1919819

11

Tôi đặt cược shape được chuyển thành nullnull không phải là trường hợp của bất kỳ lớp nào.