日期:2014-05-20  浏览次数:20843 次

请教一个关于interface的问题
public interface Car{
public void drive();
}

public class Benz implements Car{
public void drive(){
System.out.println("Driving Benz");
}
}

public class Bmw implements Car{
public void drive(){
System.out.println("Driving Bmw");
}
}

public class Driver {
public static Car driveCar(String s){
if (s.equalsIgnoreCase("Benz"))
return new Benz();
else if (s.equalsIgnoreCase("Bmw"))
return new Bmw();
}
}


public class Magnate {
public static void main(String[] args) {
Car car = Driver.driveCar("Benz");
car.drive();
}
}


在class Driver  return语句有问题吗?这样能不能返回一个Car类型,应该怎么修改,eclipse里面通过不了,这是《深入浅出设计模式》里面的一个例子,小白求指教。
------最佳解决方案--------------------
public class Driver
{
public static Car driveCar(String s)
{
if (s.equalsIgnoreCase("Benz"))
return new Benz();
else if (s.equalsIgnoreCase("Bmw"))
return new Bmw();
return null;//Here
}
}

------其他解决方案--------------------
1楼正解
还有一点,
使用else if的时候,无论你把情况考虑的多么全面了,最好在最后再加一个esle{},防止特殊情况的出现
比如你这个例子,可以最后再加else{return null;}
就像我们在try cacth的时候,可能会针对很多不同的异常做单独的处理(即很多catch),但是最后还是需要加个 catch (Exception e){}也是这个原因
------其他解决方案--------------------
引用:
Java code?1234567891011public class Driver{    public static Car driveCar(String s)    {        if (s.equalsIgnoreCase("Benz"))            return new Benz();        else if (s.equalsIgnor……
+1,LZ,if后面最好带着{},尽管只是一段话,养成好的编程习惯
------其他解决方案--------------------
1L,加了一个renturn null ,还是报错,
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
This method must return a result of type Car

------其他解决方案--------------------
已解决,谢谢
------其他解决方案--------------------
public static Car driveCar(String s) 方法末尾加一个return ,因为你的if(){} else if(){}不一定有返回值;