请教一个关于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();
}
}
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){}也是这个原因 ------其他解决方案-------------------- +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(){}不一定有返回值;