能否要求实现范型接口的类必须指定实际类型?

berg369 2011-09-16 11:32:06
能否通过注解或其它机制,来要求实现某范型接口的类必须指定实际类型?

//范型接口
public interface ITask <T>{
public String execute(T x) throws Exception;
}
//实现类,希望在接口和方法中指定一种类型,如TestObj
public class CustomerDetail implements ITask <TestObj>{

public String execute(TestObj x) throws Exception {
//业务处理代码
return null;
}
//希望能够避免这种情况
public class CustomerDetail implements ITask{
public String execute(Object x) throws Exception {
// TODO Auto-generated method stub
return null;
}
}


每一个实现ITask接口的类,参数可以是不同类型,但必须指定类型。
在eclipse中写代码时,如果指定某个类实现ITask接口但后面没给出<实际类型>时,eclipse会给出应加入“添加未实现的方法”的提示,点击自动添加的代码类型是Object,我希望避免这种情况。

如上代码所示,实现类要指明具体类型,即一定要在implements ITask后加类型参数。以便于通过反射获得该类的实际参数类型,不同的实现类将使用不同的参数类型。有何方式能控制吗?
...全文
233 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jc8futao 2011-09-16
  • 打赏
  • 举报
回复
http://kb.cnblogs.com/page/93005/

这个blog应该会对LZ有所帮助。如果不指定类型。那么编译器根本无法知道你要操作的对象是什么。那么这时候泛型就是没有任何用处的。也无法保证类型安全。
jc8futao 2011-09-16
  • 打赏
  • 举报
回复
如果不想在子类中实现,那可以使用虚类来实现这个接口。具体实现推迟到子类中。呵呵,LZ需要理解泛型是如何被编译器处理的,才能理解这个问题。
berg369 2011-09-16
  • 打赏
  • 举报
回复
1楼的方法只报一个警告,不报错,能否用注解实现呢?
打油的程序员 2011-09-16
  • 打赏
  • 举报
回复

使用“有限制通配符类型”可以限制类型范围,比如: ? extends XXX
既然都是“有限制”了,你如果不加上参数,就会报错

13,100

社区成员

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

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