课程名称:JAVA反射
课程章节:1-1 Class类的使用(https://www.imooc.com/video/3725)
课程讲师: Cedar
课程内容:
一、Class类的使用
1、类是对象,类是java.lang.Class类的实例对象
任何一个类都是Class的实例对象,这个实例对象有三种表示方式
Foo foo1 = new Foo();
1)任何一个类都有一个隐含的静态成员变量class
Class c1 = Foo.class;
2)已知该类的对象,通过getClass方法
Class c2 = foo1.getClass();
c1和c2表示了Foo类的类类型(class type);
3)Class.forName
Class c3 = Class.forName("com.imooc.reflect.Foo");
c1、c2、c3相等,一个类只可能是Class类的一个实例对象
2、可以通过类的类类型创建该类的对象实例
Foo foo = (Foo)c1.newInstance(); //需要有无参数的构造方法
二、Java动态加载类
编译时刻加载类为静态加载类、运行时刻加载类是动态加载类
1、静态加载类
2、动态加载类
三、Java获取方法信息
1、基本数据类型
关键字(如void)都存在类类型
Class c2 = String.class;
c2.getName() //全称,含包名
c2.getSimpleName()
2、类的成员函数、成员变量
1)
Class c = obj.getClass(); //obj是哪个子类的对象,c就是该子类的类类型
c.getName(); //获取类的名称
2)
Method[] ms = c.getMethods(); //获取所有的Public的函数,包括父类继承而来的方法
//c.getDeclaredMethods(); 获取该类自己声明的方法
Class returnType = ms[i].getReturnType(); //得到方法的返回值类型的类类型
returnType.getName();
ms[i].getName(); //得到方法的名称
3)
Class[] paramTypes = ms[i].getParameterTypes();
for(Class class1:paramTypes){
//class1.getName() 获取参数类型,得到的是参数列表的类型的类类型
}
课程收获:
类类型、类对象、静态加载、动态加载,听完课程感觉非常有意思,还需要加深理解。