JAVA学习笔记之反射

JAVA学习笔记之反射

从今天开始在CSDN记录Java学习的过程
学习方式:慕课网

1.Class类的使用
课程中讲到Java中所有的类都是Class的一个实例对象,假设创建一个 class foo(){} 类,foo f1=new foo() 这个方法创建的是名为f1的foo的实例对象,而Class c1=foo.class;Class c2=f1.getClass(); 得到的是Class的实例对象,也叫作foo类的类类型。
同时,Class c3=Class.forName(“类全名”); 也可以获取一个Class的实例或者说是foo的类类型。此时可以通过 (foo)c3.newInstance(); 来得到一个foo的实例对象,需要抛出异常且强制转换

2.动态加载类的方法
一般来说Java会使用new方法来创建对象,这种方式属于静态地加载类,用这种方式在编译的时候就需要加载所有的类
而动态加载类的方法就是上面第一点说到的 Class.forName(); 这个类加载器的方法

3.Java获取方法信息

课程中讲到,Java中既可以创建数据类型的类类型也可以创建类的类类型(int.class,String.class等方法获取数据类型的类类型)
1 中提出的几段代码来说明如何获取方法信息:
获取类名:
类类型(classType)c1.getName() 函数可以获取这个类类型对应类的全称如com.java.reflect.foo,用 c1.getSimpleName() 来获取类名如foo
获取方法名:
Method[] ms=Method[] ms=c.getMethods()//获取所有public函数包括继承来的,包括父类继承下来的(getDelcaredMethods() 获取全部该类自己声明的方法,不管访问权限)
ms[i].getName() 获取方法名
Class returnType=ms[i].getReturnType(); 得到返回值类型的类类型
returnType.getName(); 获取返回类型的名字
4.java获取成员变量信息
课程中讲到Java的成员变量也是一个对象, java.lang.reflect.Field 这个类封装了关于成员变量的操作
c.getFiled();
Field[] fs=c.getDeclaredFields()
Class fieldType=fs.getType()
返回成员变量的类型的类类型

5.Java方法反射的基本操作
A a=new A();
Class c=a.getClass();
Method m=c.getMethod(“methodName”,int.class,int.class)
//传入的是方法名和参数列表类型的类类型
方法的反射操作是用m对象来进行方法调用

m.invoke(a,new Object[](10,20))

返回值为null或具体返回值
集合泛型的本质,泛型旨在编译阶段起作用也就是在编译的时候限制,而反射是编译之后的操作

声明:以上仅是博主学习Java过程中做的笔记,或许有错误,也希望各位前辈朋友们看到错误并给小弟指出,多谢!

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值