-
1、普通类Student、Foo的实例对象
2、Class类的实例对象以及类类型三种表示方式
任何普通类都是Class的实例对象
查看全部 -
类类型说明
查看全部 -
Class类
查看全部 -
JAVA-Reflect专题——Java反射
查看全部 -
任何一个类都是Class的实例对象,这个实例对象有三种表示方式
1、Class c1 = Foo.class;
第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
2、Class c2 = foo1.getClass();
第二种表达方式 已经知道该类的对象通过getClass方法
3、Class c3 = null;
c3 = Class.forName("com.imooc.reflect.Foo");//类的全称且有异常产生
第三种表达方式
c1==c2==c3
//我们完全可以通过类的类类型创建该类的对象实例
//通过c1 c2 c3创建Foo的实例对象
Foo foo = (Foo)c1.newInstance();//需要有无参数的构造方法
同时又有异常产生
查看全部 -
万事万物皆对象
类是对象,是java.lang.Class类的实例对象
Foo的实例对象 Foo foo1 = new Foo(); foo1就表示出来了
Foo这个类 也是一个实例对象
任何一个类都是Class的实例对象,有三种表示方式
第一种:实际在告诉我们任何一个类都有一个隐含的静态成员class
Class c1 = Foo.class;
第二种:已经知道该类的对象通过getClass方法
Class c2 = foo1.getClass();
官网c1 c2表示Foo类的类类型(class type)
第三种: Class c3 = null;
try{
c3 = Class.forName("类的全称")
}catch(ClassNotFoundException e){
e.printStackTrace();
}
我们完全可以通过类的类类型创建该类的对象实例 通过c1 or c2 or c3创建Foo的实例
强制类型转换
Foo foo = (Foo)c1.newInstance(); //需要有无参数的构造方法
foo.print();
查看全部 -
在追求灵活性时,优先使用动态加载类
查看全部 -
Class.forName()
查看全部 -
编译之后的泛型是去泛型化的,编译时候的泛型是为了规定输入,避免出错查看全部
-
反射是动态加载类,可以创建通过将类的实例转化为接口类型,,下次只需要修改接口实现类,重新编译接口实现类,不需要需要编译接口类就可以直接运行加载查看全部
-
静态加载:在编译时完成,对所有的类进行加载,如果有一个类有问题,那么类就加载不成功, 动态加载:在运行时加载,通过反射创建接口类的实例,实现动态加载查看全部
-
new 创建对象是静态加载类,在编译时刻就需要加载左右的可能使用到的类
查看全部 -
obj.class获取类类型,底层使用native实现的。查看全部
-
普通的数据类型和静态变量不是面向对象的查看全部
-
new 创建对象 是静态加载类,在编译时刻就需要加载所有可能使用到的类。
查看全部
举报