首页 java基础 Java反射机制——动态加载类

Java反射机制——动态加载类

1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载 2、new创建对象:是静态加载类,在编译时刻就需要加载所有的…

1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载
2、new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。
3、Class.forName()通过动态加载类,可以用到一个类时,才进行加载。
【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】

 

 

类类型的获取有三种方式,假设已知Student类,则

方式一: Class c1 = Student.class;

方式二:Student stu = new Student(); Class c2 = stu.getClass();

方式三:已知Student类在包:com.javaweb.top包下,则 Class c3 = Class.forName(com.javaweb.top.Student”);

 

 

//构造函数也是对象,java.lang.Constructor中封装了构造函数的信息
//getContructors获取所有public的构造函数
//getDeclaredContructors得到所有的构造函数
Constructor[] cs = c.getContructors();

 

 

//成员变量也是对象,java.lang.reflect.Field,Field类封装了关于成员变量的操作
//getFields()方法获取的时所有的public的成员变量的信息
//getDeclaredFields获取的是该类自己声明的成员变量的信息
Field[] fs = c.getFields();
Class fieldType = field.getType() //得到成员变量的类型的类类型

 

 

Java反射机制——通过反射了解集合泛型的本质
1:反射的操作都是编译之后的操作;就是运行阶段
2:java中集合的泛型是防止错误输入的;只在编译阶段有效,只要绕过编译就无效啦
我们可以通过方法的反射来操作,绕过编译

 

 

一、如何获取某个方法:方法的【名称】和【方法的参数列表】才能【唯一确定】某个方法
1、要获取一个类的某个方法,需要先得到类类型
2、通过Class.getMethod(name,parameterTypes)获得public的该方法:如c.getMethod(“print”,new Class[]{int.class,int.class})或者参数写成int,int; ——> 来获取 public void print(int a,int b)
3、同样getDeclaredMethdo(name,paramterTypes)获得自己声明的该方法
二:方法的反射操作;就是用method对象进行方法调用;当然还是需要传参的
method.invoke(对象实例,参数列表)
2.1:invoke(user,new Object[]{10,20})倘若没有参数就可省略:invoke(user)
2.2:invoke(user,10,20)//直接传参

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

26个大小写字母对应的哈希值

26个大小写字母对应的哈希值

大写字母: 小写字母 A 对应的哈希值:65 B 对应的哈希值:66 C 对应的哈希值:67 D 对应的哈希值:68 E...
linux 把文件名字写入到txt

linux 把文件名字写入到txt

1、首先连接上linux主机,进入到需要处理的目录,例如“/”目录。   2、输入:ls -1 > 1....
git 流程开发

git 流程开发

前提条件:不能在 master 分支上修改任何文件。master 分支的变更只能通过 git pull 和 git me...
使用Git将本地文件提交到远程仓库

使用Git将本地文件提交到远程仓库

使用Git将本地文件提交到远程仓库 使用Git将本地文件提交到远程仓库 现在要将本地代码推到git远程仓库保存,可以提交...
将博客搬至CSDN

将博客搬至CSDN

将博客搬至CSDN
返回顶部