方式一:对象.getClass() 方法是 根对象Object的方法。 是其他类继承Object的getClass方法。
方式二:类名.class,你可以理解为字节码本身就是静态的,类加载的时字节码就进JVM了。所以类.class好比类调用静态方法似得调用字节码对象。
方式三:Class.forName()是Class类的静态方法。参数是字符串,字符串是类的全路径名。
接着上面的说。对象.getClass()必须要有对象,那么必须有对象。所以你得先创建对象。创建这个类对象的前提就是,你能访问到这个类(访问修饰符满足),你建对象的时候必须成功。
类名.class,那你必须要引用到这个类。(要么该类同包,要么import进来),例如:必须要import java.io.InputStream; 才能 InputStream.class
当然也可以 java.io.InputStream.class
以上两种方式,不满足上面说的条件,编译不会通过,直接报错。
而第三种方式 Class.forName("类的全路径名") ,因为参数是字符串,所以你随便写,都会编译通过。如果全路径写错了,运行才会报错。第三种方式,可以最后才将类全路径名读入,所以常用与反射,类名不确定也不会编译错,就可以根据自己需要随意配置。
另外,仅有第二种方式:类名.class 还支持九 种类型(八种基本类型+void)//原因:九种类型没对象,不支持第一种方式
//原因:九种类型没有不是类,没路径,没法写全路径名
例如: Class clazz=int.class; //返回字节码为int
相关文章
- java 多线程:Callable接口;FutureTask类实现对象【Thread、Runnable、Callable三种方式实现多线程的区别】
- java中反射机制通过字节码文件对象获取字段和函数的方法
- 三种获取字节码对象的方式及区别
- 详述获取字节码文件及其内容的方式
- golang 切片的三种使用方式及区别的说明
- Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)
- 第十篇----------javascript函数的三种定义方式及区别
- JQuery this和$(this)的区别及获取$(this)子元素对象的方法
- 转: JQuery this和$(this)的区别及获取$(this)子元素对象的方法
- 三种获取字节码对象的方式及区别