Java 泛型警告

N长时间没来这了,没想到连后台界面都换了。。。
废话不说,进入正题!


系统框架:一棵"命令"树,一棵"数据"树,命令树的根 ,即顶端元素是一个抽象类或接口,对外提供一个 execute 方法,但是这个方法的返回类型会因为命令的不同而不同 ,在这里举两个个实例,以学生选课来说。
  命令一、学生选的课的列表 GetMyCourseCommand 命令的 execute() 方法应返回一个 List。
  命令二、是不是选了某一个课程 CourseIsSelectedCommand 命令的 execute() 方法返回一个 Boolean。
这样的话,我的接口会定义成:
public   interface  Comamnd < T > {
     
public T execute();
}

由于我不想让客户端知道自己到底调用了哪一个命令,于是写一个工厂来生产 Command,由于是工厂,所以 getCommand() 方法将被设置成 static 的,很简单,我犯不着每次想得到一个 Command 都创建一个 Factory 对象。
这样,客户端要做的,就是根据需求创建不同的 Data 对象,并将 data 对象传入工厂方法,刚才提及的 getCommand() 的完整定义是
public   static  Command getCommand(Data d);

至此,客户端在处理上述例子时对应应该做的就是:
  例子一、
        Data d  =   new  GetMyCourseData(params...);
        Command
< List >  cmd  =  CommandFactory.getCommand(d);
        List
< Course >  list  =  cmd.execute();

  例子二、
        Data d  =   new  CourseIsSelectedData(params...);
        Command
< Boolean >  cmd  =  CommandFactory.getCommand(d);
        
boolean  isSelected  =  cmd.execute();


客户端好像挺清晰的,但是 Java 的泛型却提示了警告,在中间那行生产Command对象的代码那。

试过N多方法,除了 new 一个工厂对象出来,并将 getCommand 改为成员方法外,都无法消除这个警告。当然,我也不确定这个做法是不是有点设计过度 :-(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值