Java是否可以Switch instanceof

clariones 2015-05-15 04:05:39
问题的来由是这样的:
两套类:service和实体。 例如A是B的父类, ServiceA 给实体A提供系列的服务, ServiceB 针对实体B提供一系列的服务。例如校验。

现在想开发一个接口
public interface X{
void foo(A input);
}
同时处理A或者B类实体。
那么在实现类的代码中,需要先通过ServiceXXX校验输入,目前的写法是这样:

void foo(A input){
if (input instanceof B){
ServiceB.verify(input, 100); // 随便写的verify接口,只是表明A,B的校验规则和参数不同
}else if(input instanceof A){
ServiceA。isValid(input);
}else{
throw new SomeException();
}
}



请教各位,Java7 或者 8 中有没有类似这样的语法功能:

switch (input.class){
case B.class:
......
break;
case A.class:
......
break;
default:
......
}
...全文
842 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan19931103 2015-05-16
  • 打赏
  • 举报
回复
不太清楚,倒是可以if啊
scmod 2015-05-16
  • 打赏
  • 举报
回复
感觉好像差不多啊...
finemi 2015-05-15
  • 打赏
  • 举报
回复

switch(input.getClass().toString()){
	 	case "com.xxx.A":
	 		break;
	 	case "com.xxx.B":
			 break;
 }
java7的switch支持字符串比较了
oh_Maxy 2015-05-15
  • 打赏
  • 举报
回复
你可以用Class的toString方法试试呀:input.class.toString()

62,614

社区成员

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

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