2016-05-28 58 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());