我是新手,我已经涵盖了Java的所有基本概念。到目前为止,我已经遇到过使用Object类和使用“.class”语法创建对象引用的示例。
我试着寻找关于如何使用这2个概念的解释,但我没有得到清晰的图片。
我只看到,是的,我们可以创建对Object的引用。 但是这个参考的用途/用途是什么?
对于 .class 语法,我一直看到“反射”一词,但是当我在像 existingclass.class 这样的exsting类上使用这种语法时会发生什么?是否只是在< existingclass >中使用方法/数据?没有创建实例/对象?
示例将不胜感激。
答案 0 :(得分:8)
对Object
的引用可以指向任何对象;它可以指向不同时间的不同种类的物体。当你想要传入任何类型的对象时,它是一个很好的参数类型,当你想要能够返回任何类型的对象时,它是一个很好的返回类型。
符号 ClassName .class
返回java.lang.Class
的实例,代表 ClassName 。对于Java虚拟机中加载的每个类,都有一个java.lang.Class
对象来表示该类。至于它有什么好处 - 它只适用于相当高级,神奇的东西,比如编写代码,询问类有什么方法,或者创建一个类的实例,只要你拥有的是用户输入的类的名称或从文件中读取。
此外,当您了解线程时,您将看到类对象具有与静态方法相关的特殊用途;现在这不需要你了。作为一名Java程序员,您无需使用它;但是有一天,你可以。
答案 1 :(得分:1)
单词Java
有三个含义:
从编程语言的角度来看,它定义了语法和语法。它提供了如何使用该语言的说明。要了解.class
,您最好参考JVM规范(是的,它已经超出了语言范围)。
粗略地说,你的程序以字节代码格式被彻底编译成.class
文件,包括超类名称inherented,接口实现,以及最重要的编译代码等。
运行程序时,应将其完成的所有.class
加载到JVM中。 IIRC,类首次被程序引用时加载,而不是当前程序将被运行,例如在导入说明中或通过代码中的直接.class
引用。
为了回答您的问题,.class
语法不仅用于引用类信息,例如方法定义或静态变量,但也强制执行JVM加载特定的类。 (如果您熟悉JDBC或将来有机会使用它,您会发现.class
语法可用于强制加载数据库驱动程序)