编码中这种写法是什么意思?

jingecn 2009-08-13 02:52:38
 <M extends Member & AnnotatedElement> void addInjectorsForMembers(...){
...
}



<M extends Member & AnnotatedElement> ?
...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#108850

懂英文的可以看一下。我估计说的就是楼主的问题。
jingecn 2009-08-13
  • 打赏
  • 举报
回复
想了想 换成“,”号后似乎就是两个泛型参数而不是一个泛型M定义了
但用 & 还是第一次看到,比较新奇
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
真不知道是什么意思了.没有见过啊.
jingecn 2009-08-13
  • 打赏
  • 举报
回复
主要是 <M extends Member & AnnotatedElement> 中 & 是否可以替换成,,或者说二者有和区别


换成","号后 Eclipse里警告The type parameter AnnotatedElement is hiding the type AnnotatedElement
jingecn 2009-08-13
  • 打赏
  • 举报
回复
这是 com.opensymphony.xwork2.inject.ContainerImpl 里的方法,应该是没语法错误的,但也不是一般的泛型用法,以前没见过,才请教达人解疑

  <M extends Member & AnnotatedElement> void addInjectorsForMembers(
List<M> members, boolean statics, List<Injector> injectors,
InjectorFactory<M> injectorFactory) {
for (M member : members) {
if (isStatic(member) == statics) {
Inject inject = member.getAnnotation(Inject.class);
if (inject != null) {
try {
injectors.add(injectorFactory.create(this, member, inject.value()));
} catch (MissingDependencyException e) {
if (inject.required()) {
throw new DependencyException(e);
}
}
}
}
}
}



长公子冰 2009-08-13
  • 打赏
  • 举报
回复
平常用的泛型还是蛮多的,不过都是些基础的泛型,更复杂的还没有摄入。
弘石 2009-08-13
  • 打赏
  • 举报
回复
对java5不了解,学习了
Pbulic 2009-08-13
  • 打赏
  • 举报
回复
up....
bigbug9002 2009-08-13
  • 打赏
  • 举报
回复
楼上说的对,这是泛型.

但你的写法好像不对.两个类型连在一起,不对吧.

<>前面的类型你没有写.比如是
List<M extends Member & AnnotatedElement>


表示List中可以存放的元素是Member类的子类,或是AnnotatedElement类.
lovecj6185 2009-08-13
  • 打赏
  • 举报
回复
java 5 以后的泛型方法的写法
建议楼主百度也好,google也罢,搜一下 java泛型方法
肯定比我在这边说的更清楚

像下面这样的就是泛型方法,而且还用了多态
<T extends Object> public static List<T> make(T first) {
return new List<T>(first);
}

62,614

社区成员

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

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