instanceof的问题!!!急`
public   class   why   { 
 	public   boolean   ok(Object   o){ 
 		if(o   instanceof   Inner){ 
 			return   true; 
 	            }else   {return   false;} 
 	   } 
 	class   Inner{ 
 	} 
 	public   static   void   main(String   []args){ 
 		why   a   =   new   why(); 
 		why   b   =   new   why(); 
 		why.Inner   in   =a.new   Inner(); 
 		boolean   yesorno; 
 		boolean   noyes; 
 		//编译能通过 
 		yesorno   =   (in   instanceof   Inner); 
                         //编译不能通过(条件操作数类型   why   和   why.Inner   不兼容) 
 		//通过表达式判断a是不是Inner的类的实例,编译不能通过 
 	         	noyes   =   (a   instanceof   Inner); 
 	         	//通过调用ok方法判断a是不是Inner类的实例,编译通过 
 		b.ok(a); 
 	} 
 } 
 为什么表达式中直接返回BOOLEAN类型yesorno   =   (in   instanceof   Inner);可以 
 而noyes   =   (a   instanceof   Inner);却不行??
------解决方案--------------------instanceof在下列几种情况下会发生编译时错误: 
 1.instanceof左边的变量必须是一个引用类型或null类型(null类型只有null一个可用值)。 
 2.instanceof左边的变量必须是编译时确定的类型。 
 3.如果从instanceof左边的变量到右边的类型转换由于编译错误而拒绝,那么instanceof的使用将引起编译错误。因为这种情况下,instanceof表达式总不可能是true。   
 instanceof的结果只有在左边的变量不是null并且该引用能转换成右边的类型而不引起
ClassCastException异常的情况下才为true,否则为false.