5
A
回答
7
术语“RTTI”是一个特定于C++的术语,指的是核心语言的功能,它允许程序在运行时确定各种对象的动态类型。它通常是指dynamic_cast
或typeid
运营商,以及typeid
生产的相关std::type_info
对象。
另一方面,术语“反射”是跨编程语言使用的通用术语,指的是程序在运行时检查和修改其对象,类型等的能力。
我听说应用于instanceof
术语是type introspection和instanceof
有时也被称为对象自省,因为程序被允许查看正在运行的类型来决定采取什么样的行动。我认为这是一个比反思更弱的术语,因为它不允许对对象的字段或方法进行详细的反思,但我认为调用instanceof
运算符反射的用法不会在技术上不正确。
至于你的其他问题 - 如何在运行时加载类信息? - 这真的取决于JVM的实现。类型最终负责将类加载到系统中,但JVM可以解释它,但它想要的。我曾经在JavaScript中构建过一个原型JVM,并且在内部,所有反射调用都只是查询了代表类,字段和方法的底层JS数据结构。我可以想象HotSpot JVM会做一些完全不同的事情,但它几乎是实现定义的。
希望这会有所帮助!
2
简而言之,RTTI和反射之间的真正区别在于,使用RTTI时,编译器会在编译时打开并检查.class文件。使用反射,.class文件在编译时不可用;它由运行时环境打开并检查。
0
因此,RTTI和反射之间的真正区别在于,RTTI编译器会在编译时打开并检查.class文件。换句话说,你可以用“正常”的方式调用一个对象的所有方法。使用反射,.class文件在编译时不可用;它由运行时环境打开并检查。 (с)
相关问题
- 1. RMI和反射之间的区别
- 2. ComponentModel反射(例如PropertyDescriptor)和标准反射(例如PropertyInfo)之间的区别?
- 3. OpenGL中环境反射的SphericalMapping和CubeMapping之间的区别?
- 4. Java和C#和.NET之间的区别
- 5. java类和jar之间的区别
- 6. java和javaw之间的区别
- 7. Java Point,getX()和point.x之间的区别
- 8. Java - javax.crypto.Mac和javax.crypto.Cipher之间的区别?
- 9. java中Executor和ExecutorCompletionService之间的区别
- 10. scala和java枚举之间的区别
- 11. FastCGI和Java Servlet API之间的区别
- 12. Authenticode,SPC和Java CodeSign之间的区别?
- 13. '。'之间的区别和“。” in java
- 14. MongoDB Java API:com.mongodb.DBCollection.Save()和com.mongodb.DBCollection.Insert()之间的区别?
- 15. objective-c和java之间的区别
- 16. Apache Struts和Java EE之间的区别?
- 17. Java中= +和+ =之间的区别?
- 18. Short.parseShort和Short.value之间的Java区别
- 19. 单双反斜杠之间的区别
- 20. '+ ='和'= +'之间的区别?
- 21. #。/和#之间的区别。 ./
- 22. {!!之间的区别!!}和{{}}
- 23. ==和case之间的区别?
- 24. 之间的区别。和#
- 25. '#','%'和'$'之间的区别
- 26. | =和^ = css之间的区别
- 27. “%〜dp0”和“。\”之间的区别?
- 28. .eq之间的区别。和==
- 29. ==和.equals()之间的区别?
- 30. `%in%`和`==`之间的区别
谢谢!不知何故,我在我的Java课程中了解了RTTI,这可能是为什么我感到困惑:S – godlamp