2016-05-28 60 views
0

我正在做一個java項目,我需要檢查輸入流中的給定對象是否爲「xyzsomething」類型。如何找出來自對象輸入流的對象的類?

我明白我可以使用instanceof,但是當我檢查instanceof到類名「xyzsomething」時,它給我一個編譯錯誤,因爲它不能識別類名。我該怎麼辦?

編輯:對不起,我是新手。下面是代碼和錯誤:

if ((input instanceof ShotCoordinatesServer)) <--- error occurs on this 
               it won't recognize class. 
{ 
     checkHit((ShotCoordinatesServer)input); <--- error occurs on this too 
} 

ERROR: cannot find symbol 
+1

...你確定你輸入的是正確的?請[編輯]您的問題以添加相關的代碼片段。 –

+0

只是將其改爲包含我的代碼。這可能是一個非常簡單的錯誤,但我不知道如何解決它。 –

+0

這不是你錯誤的原因。錯誤發生在哪裏?請發佈更多代碼。 –

回答

0

下面是一個例子:

ObjectInputStream ois = ... 
Object something = ois.readObject(); 
if (something instanceof MyClass) { 
    ((MyClass) something).someMethodOfMyClass(); 
} 

這應該編譯......提供的符號MyClass在編譯時是已知的。


在您的例子,似乎ShotCoordinatesServer在編譯時已知的。該修補程序可能僅僅是import這個類。或者您可能需要將其添加到編譯時類路徑中。

如果該類在編譯時不可用,則不能使用instanceof和類型轉換。相反,您將需要使用反射...或者測試並轉換爲超類型爲ShotCoordinatesServer的接口類型。

但是,如果你只是想看看你剛纔讀的類的名稱...

System.out.println(something.getClass().getName());