编程思想中一不明白的例子
import   java.util.*;   
 class   Shape{ 
 	void   draw(){} 
 	void   erase(){}    
 }   
 class   Circle   extends   Shape{ 
 	void   draw(){ 
 		System.out.println( "Circle.draw() "); 
 	} 
 	void   erase(){ 
 		System.out.println( "Circle.erase() "); 
 	} 
 }   
 class   Square   extends   Shape{ 
 	void   draw(){ 
 		System.out.println( "Square.draw() "); 
 	} 
 	void   erase(){ 
 		System.out.println( "Square.erase() "); 
 	} 
 }   
 class   Triangle   extends   Shape{ 
 	void   draw(){ 
 		System.out.println( "Triangle.draw() "); 
 	} 
 	void   erase(){ 
 		System.out.println( "Triangle.erase() "); 
 	} 
 }   
 class   RandomShapeGenerator{ 
 	private   Random   rand=new   Random(); 
 	public   Shape   next(){ 
 		switch(rand.nextInt(3)){ 
 		            default:      //在去掉default:后将编译错误 
 			case   0:return   new   Circle(); 
 			case   1:return   new   Square(); 
 			case   2:return   new   Triangle();  				 
 		} 
 	} 
 }   
 public   class   Shapes{ 
 	private   static   RandomShapeGenerator   gen=new   RandomShapeGenerator(); 
 	public   static   void   main(String[]   args){ 
 		Shape[]   s=new   Shape[9]; 
 		for(int   i=0;i <s.length;i++){ 
 			s[i]=gen.next(); 
 		} 
 		for(int   i=0;i <s.length;i++){ 
 			s[i].draw();    
 		} 
 	} 
 }   
 各位能否告诉我为什么在switch那必须有default么?而且我把它放在case之后加上break也是出现同样的错误。
------解决方案--------------------public Shape next() 
 这个方法需要返回一个Shape对象 
 如果你的switch没有default分支 
 那么在case判断完没有对应的rand.nextInt(3)值的时候没有对象返回,不符合这个方法的声明,所以会报错,提醒你这个方法可能没有返回Shape对象
------解决方案--------------------up
------解决方案--------------------next()方法必须要返回一个Shape对象