-
笔记总结1查看全部
-
xx的类类型 xx类的类类型
查看全部 -
动态加载类,在运行时刻加载
Class c = Class.forName("类的全称");
//通过类类型,创建该类对象
OfficeAble oa = (OfficeAble)c.newInstance():
查看全部 -
new 创建对象,是静态加载类,在编译时需要加载所有可能使用到的类
查看全部 -
class Foo
Foo foo1 = new Foo();
Class c1 = Foo.class;
Class c2 = foo1.getClass();
Class c3 = Class.forName("com.imooc.reflect.Foo"); //完整路径
通过类的类类型创建该类的对象实例--》通过 c1 or c2 or c3创建Foo的实例
Foo foo = (Foo) c1.newInstance();//需要有无参数的构造方法
查看全部 -
Demo demo = new Demo(); Class c1 = Demo.class; Class c2 = demo.getClass(); Class c3 = Class.forName("Demo在src下的绝对路径");
c1 = c2 = c3 (即三者都是指向同一个引用对象)
实例化则可以通过Demo demo = (Demo)c1(or c2 or c3).newInstance()获取demo对象。但需要注意:newInstance()会调用Demo类的无参构造函数,如果没有无参的构造函数会报错。
查看全部 -
这个时候word这个类已经有了,所以可以加载到,但是Excel没有存在,所以加载不到,编译不通过。
但是这个时候程序还是无法执行,因为静态加载机制中,只要有1个加载不到导致其他的都不能编译通过,但是我们想要的就是需要用到哪一个就去加载哪一个
查看全部 -
功能性的类使用动态加载而不是静态加载,类类型是在运行时加载类,new的方式是在编译的时候加载全部的类,属于静态加载类
查看全部 -
动态加载类:
1、使用反射的方式,运行时加载所需类
2、使用类类型实例化具体对象,并返回统一接口的实例对象
3、主只需要编译一次
查看全部 -
通过Class,Method来认识泛型的本质(javafanshe);
ArryList<String> list= new ArrayList<String>(); 往集合添加值时,只能添加String类型。
反射的操作都是编译之后的操作
Java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译就无效了。
查看全部 -
用java反射获取print()方法:
首先需要获取类的信息--A a1=new A(); Class c=a1.getClass();
获取方法-(由名称和参数列表来决定)-----Method m=c.getMethod("print",int.class,int.class); 其中print 是方法名称
方法的反射操作--Object 0 = m.invoke(a1,10,20);
查看全部 -
Object 0 = m.invoke(a1,10,20);其中a1是A这个类的实例对象。
查看全部 -
参数列表就是参数已逗号隔开所形成的列表
1)如何获取某个方法
方法的名称和方法的参数列表才能唯一决定某个方法
2)方法的反射操作
method.invoke(对象,参数列表)
反射:方法调用的参数列表
查看全部 -
关于反射的相关信息--第二节
成员变量也是对象
java.lang.reflect.Field Field类封装了关于成员变量的操作
Field c.getDeclaredFields(); 获取的是该类自己声明的成员变量的信息
(c为类的信息 obj.getClass())
Class field.getType(); 得到成员变量的类型的类类型 例如 int.class
String field.getName(); 得到成员变量的名称
构造函数也是对象 java.lang.Constructor封装了构造函数的信息
Constructor[] c.getDeclaredConstructor();获取所有本类中自身创建所有的构造函数
Class[] constructor.getParameterTypes();得到的是参数列表的类类型
查看全部 -
java反射相关知识点:
要获取类的信息 首先要获取类的类型
Class c= obj.getClass(); c.getName();获取类的名称
Method类,方法对象 一个成员方法,就是一个Method对象
Method[] c.getDeclaredMethods(); 获取本类的所有声明的方法
Class c.getDeclaredMethods().getReturnType();得到方法的返回值类型
Class c.getDeclaredMethods()[i].getParameterTypes();得到参数列表的类型的类类型
查看全部
举报