这这段代码中,Cycle是个基类
public Cycle get(){
switch(random.nextInt(3)){
default:  //问题在这里,如果这句default:放到句末的话,这个方法将出错。
case 0: return new Unicycle();  //这些都是子类
case 1: return new Bicycle();
case 2: return new Tricycle();

}
//return null; 除非这里加句 return null;
}
关于这个问题谁知道??

解决方案 »

  1.   

    default:放到句末的话,没有返回值。
    因为方法需要返回值,没有返回值就报错
      

  2.   

    呵呵.那基本上是不可能的.而且正常情况下,就是应该放在最后面的.
    你的方法应该有返回值.只要在Default返回Null即可.如下:public Cycle get(){ 
    switch(random.nextInt(3)){ 
    case 0: return new Unicycle();  //这些都是子类 
    case 1: return new Bicycle(); 
    case 2: return new Tricycle(); 
    default: return null;
    }

      

  3.   

    If not 0, 1, 2, the flow will turn to Default. So you need do something in Default block, or you just delete Default block.
      

  4.   

    你只要保证你的方法有返回值就可以了,至于default放在哪里是无所谓的。
    程序就两种情况:执行case或者执行default
    因为你的程序有可能出现都不符合case的情况,所以就执行default
    而你的default没有返回值。如果没有在最后加一句return null;
    就可能出现方法没有返回值,是不行的。
      

  5.   

    这里的 default 没有意义了,去掉吧。
      

  6.   

    假设switch(3) 
    default放在开始,那么他先执行default 因为他没有return或break 所以继续执行到第二个有了返回值 跳出。
    default放在最后,他直接到了default那里,因为他没有return或break,继续往下执行,因为下面没有东西了,而方法需要跳出。所以就出错了……不知道你明白了没有 
      

  7.   

    你没有break,default这句要执行的,但是执行是又没有返回值,所以出错啊!