泛型问题,这是什么技巧?

来逗她 2013-02-20 02:25:54
abstract class AbstractBootstrap<B extends AbstractBootstrap<B, C>, C extends Channel>{}

public final class ServerBootstrap extends AbstractBootstrap<ServerBootstrap, ServerChannel> {}

看netty源码看到这样的代码,看的很纠结,哪位高手解析下这种类型定义的意义在哪,或者说什么情况下这样定义。
...全文
337 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2013-02-22
  • 打赏
  • 举报
回复
引用 4 楼 mking6100 的回复:
引用 2 楼 a597926661 的回复:确实很纠结 算是递归么 源码不好看啊确实,ServerBootstrap extends AbstractBootstrap<ServerBootstrap, ServerChannel>,感觉先有AbstractBootstrap<ServerBootstrap, ServerChannel>这个类,才能定义ServerBo……
可以不必理解为先后关系,理解为同时声明。
茜茜你好坏 2013-02-22
  • 打赏
  • 举报
回复
泛型是指定了类对象的类型,当出现错误时,容易发现是类型不匹配,这样不用重启服务器就可更正
godwanglong 2013-02-22
  • 打赏
  • 举报
回复
这是声明了2个泛型类别,然后又用了自限定。《thinking in java》里面有很详细的解释
  • 打赏
  • 举报
回复
不就泛型类型有继承别的类吗,有啥难理解的
七神之光 2013-02-22
  • 打赏
  • 举报
回复
女雅乱 2013-02-21
  • 打赏
  • 举报
回复
泛型最直接的用处感觉就是如果类型不匹配,编译报错,这样就可以不用启动服务器就能改错了
s478853630 2013-02-20
  • 打赏
  • 举报
回复
这样会让你在使用泛型的时候,形成强有力地约束,你必须按这个约束使用,否则不能编译
来逗她 2013-02-20
  • 打赏
  • 举报
回复
引用 2 楼 a597926661 的回复:
确实很纠结 算是递归么 源码不好看啊
确实,ServerBootstrap extends AbstractBootstrap<ServerBootstrap, ServerChannel>,感觉先有AbstractBootstrap<ServerBootstrap, ServerChannel>这个类,才能定义ServerBootstrap这个类。但是这个类AbstractBootstrap<ServerBootstrap, ServerChannel>有包含ServerBootstrap这个类。搞不明白
ylovep 2013-02-20
  • 打赏
  • 举报
回复
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率
a597926661 2013-02-20
  • 打赏
  • 举报
回复
确实很纠结 算是递归么 源码不好看啊
lvzg_005 2013-02-20
  • 打赏
  • 举报
回复
AbstractBootstrap<B extends AbstractBootstrap<B, C>, C extends Channel>{} 第一个B代表了所有实现或继承了类AbstractBootstrap的实例 C代表所有实现接口Channel的实例类

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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