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. JavaScript 事件冒泡简介及应用(转)
  2. 解决:error: Cannot find libmysqlclient_r under /usr/local/mysql.
  3. 如何测量代码执行时间
  4. synchronized 与 ReentrantLock
  5. 使用require.context实现前端工程自动化
  6. Jupyter配置步骤
  7. 关于swiper的tab(选项卡)中设置了autoHeight没有效果解决
  8. JQ ajax解决跨域
  9. PWM信号作用示例——调节台灯亮度
  10. java 变参 使用数组调用_java中的可变参数使用方法
  11. Python string生成随机数
  12. [LeetCode]119.Pascal's Triangle II
  13. pat1091. Acute Stroke (30)
  14. 常用电源及稳压芯片(一)
  15. zen3架构_AMD Zen3架构升级,AMD最新产品一览
  16. 大数据技术Spark详解
  17. 【贵州i茅台周年答题--答案】
  18. debian10使用蓝牙aptx
  19. Unity 制作愤怒的小鸟
  20. css预处理器(less学习笔记)

热门文章

  1. gc频繁的暂停启动_减少主要GC暂停的频率
  2. 带有PostgreSQL的Docker Compose for Spring Boot应用程序
  3. java 编译 器 ide_在没有IDE的情况下编译和运行Java
  4. 嵌入式开发环境构建_设计模式:不可变的嵌入式构建器
  5. 使用AWS Lambda在Go中构建RESTful API
  6. qotd服务_QOTD:Java线程与Java堆空间
  7. MyBatis缓存与Apache Ignite的陷阱
  8. jax-rs jax-ws_Tomcat上具有JAX-WS的Web服务
  9. Akka笔记–演员介绍
  10. Akka Notes –演员记录和测试