请教一个关于interface的问题

hustcqb 2012-12-07 10:29:48
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里面通过不了,这是《深入浅出设计模式》里面的一个例子,小白求指教。
...全文
199 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Swear_fling 2012-12-10
  • 打赏
  • 举报
回复
public static Car driveCar(String s) 方法末尾加一个return ,因为你的if(){} else if(){}不一定有返回值;
hustcqb 2012-12-10
  • 打赏
  • 举报
回复
已解决,谢谢
hustcqb 2012-12-10
  • 打赏
  • 举报
回复
1L,加了一个renturn null ,还是报错, Exception in thread "main" java.lang.Error: Unresolved compilation problem: This method must return a result of type Car
骚还是公骚骚 2012-12-07
  • 打赏
  • 举报
回复
引用 1 楼 duxingzhe0311 的回复:
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后面最好带着{},尽管只是一段话,养成好的编程习惯
rockets311 2012-12-07
  • 打赏
  • 举报
回复
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
	}
}
sd4324530 2012-12-07
  • 打赏
  • 举报
回复
1楼正解 还有一点, 使用else if的时候,无论你把情况考虑的多么全面了,最好在最后再加一个esle{},防止特殊情况的出现 比如你这个例子,可以最后再加else{return null;} 就像我们在try cacth的时候,可能会针对很多不同的异常做单独的处理(即很多catch),但是最后还是需要加个 catch (Exception e){}也是这个原因

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧