aluckdog

模板方法在编译过程中类型擦除:update(T,UpdateOperations)退化成update(Object,UpdateOperations);update(Query,UpdateOperations)退化成update(Query,UpdateOperations);morphia的update方法不光是一个模板方法,还是一个重载方法。重载方法是在编译时确定具体调用哪个方法,由于你在传参的时候,没有传入类型参数:up,是一个没有带模板参数的原始类型UpdateOperations;ds.createQuery(clazz).filter("_id",id),同样是一个没有带模板参数的原始类型Query;由于Query可以同时匹配Query和Object类型,所以会造成编译时同时匹配这2个update方法,无法确定具体调用哪个重载方法。解决办法:对于模板方法,在传入参数的同时,带上类型参数,这样编译器在编译的时候会检查模板方法传入参数之间的类型关联关系,从而可以确定具体调用哪个重载方法。给个简单示例:(javac无法编译通过)publicclassAppTest{publicstaticvoidmain(String[]args){Printp=newPrint();AppTestapp=newAppTest();Classclazz=AppTest.class;app.print(clazz,p);}privatevoidprint(Tobj,Printp){System.out.println("typeT");}privatevoidprint(Classclazz,Printp){System.out.println("typeClass");}staticclassPrint{Print(){}voidp(){}}}(javac编译ok)publicclassAppTest{publicstaticvoidmain(String[]args){Printp=newPrint();AppTestapp=newAppTest();Classclazz=AppTest.class;app.print(clazz,p);}privatevoidprint(Tobj,Printp){System.out.println("typeT");}privatevoidprint(Classclazz,Printp){System.out.println("typeClass");}staticclassPrint{Print(){}voidp(){}}}PS:eclipse的编译级别放的比较宽,有些unchecked的都直接给Pass掉了,这个能否在eclipse中设置,我没试过,你可以自行研究看看,但是通过javac编译不通过肯定是有问题滴...

反射与泛型 java_Java的反射 和 泛型的一个问题相关推荐

  1. java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用

    一,泛型和反射的初识 Java泛型是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型.简单的理解就是参数化类型,我们一开始就知道这个泛型T是Str ...

  2. 【JavaLearn】(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例

    目录 1. 反射 1.1 反射引入 1.2 反射的入口-Class类 2. 认识 Class 类 3. 使用反射创建对象 4. 使用反射操作属性 5. 使用反射执行方法 6. 使用反射操作泛型 6.2 ...

  3. 【JavaLearn】#(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例

    1. 反射 1.1 反射引入 编译时,知道类或对象的具体信息,此时直接对类和对象进行操作即可 编译时不知道类或对象的具体信息,只有运行时知道,需要使用反射来实现 ==> 比如驱动的类的名称放在 ...

  4. new泛型 java_Java泛型

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

  5. 泛型java 代码讲解_Java泛型详解

    2516326-5475e88a458a09e4.png 一,打破砂锅问到底 泛型存在的意义? 泛型类,泛型接口,泛型方法如何定义? 如何限定类型变量? 泛型中使用的约束和局限性有哪些? 泛型类型的继 ...

  6. java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

    原 java泛型(二).泛型的内部原理:类型擦除以及类型擦除带来的问题 2012年08月29日 23:44:10 Kilnn 阅读数:56717 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  7. java反射的编译过程_Java反射机制小结和实际操作

    一.什么是反射 1.编译和运行 在了解什么是Java反射机制前,先聊聊Java的编译和运行. 还记得第一次使用记事本编写第一个Java程序的场景吗?通过命令窗口,使用javac命令编译一个.java文 ...

  8. 漫反射 高光反射_如何有效地使用反射

    漫反射 高光反射 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导您 ...

  9. java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作

    我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作.那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息.所以,反射的第一步就是得 ...

最新文章

  1. 年薪50万,副职级别!注册安全工程师的前途如此光明?
  2. python接口自动化测试(三)-requests.post()
  3. 监视mysql 哪些指标_MySQL 监控指标
  4. SQL注入—我是如何一步步攻破一家互联网公司的
  5. 64.多态性实现机制—静态分派与动态分派(方法解析、静态分派、动态分派、单分派和多分派)
  6. 汽车电子专业知识篇(六)-DDS如何满足自动驾驶汽车中的应用?
  7. ajax 入参为list_ajax向后台传递list参数
  8. Android Studio (11)---使用主题背景编辑器设计应用主题背景
  9. java 面向对象之内存管理
  10. Sauceware Audio Scorch for Mac - 嘻哈说唱音频乐器
  11. python爬虫-计算机要点
  12. 服务器内存条和普通内存条性能,科技知识:服务器内存条和普通内存条区别
  13. 习题--答案--22/6/8
  14. gradle命令中api和implement的区别
  15. linux 如何删除gpt分区,Centos 7下如何删除GPT分区
  16. 适兕:成为开源布道师
  17. 001,Python微信接龙脚本与腾讯会议定时挂网课脚本
  18. 文明与征服君士坦丁阵容搭配推荐 文明与征服君士坦丁攻略
  19. centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件
  20. 使用library(tseries)命令,报错“Error in library(tseries) : there is no package called ‘tseries’

热门文章

  1. spicy命令_Spicy Spring:动态创建自己的BeanDefinition
  2. jsf 自定义属性_如何在JSF中实现自定义密码强度指示器
  3. 在Java中键入Safe SQL
  4. Java,JavaFX的流畅设计风格拨动开关
  5. wicket_Wicket模型的干净方法
  6. xaml_XAML或JavaFx?
  7. 异步过程的自动化测试
  8. JUnit规则–引发异常时执行附加验证
  9. Java数组排序解码
  10. Spring开发人员知道的一件事