反射

使用反射获得Class类

Class cls = Class.forName("全类名") //包括包名
Class cls = xx.Class;//xx代表类名
Class cls = 对象.getClass();

使用反射获得构造方法

有个构造方法如:

public Book(String bookName, String author,double price) {this.bookName = bookName;this.author = author;this.price = ((int) price);}

在使用反射来获得的构造方法的时候需要与构造方法中的参数类型进行对应

Constructor declaredConstructor = cls.getDeclaredConstructor(String.class, String.class, double.class);
//或者使用包装类的静态常量TYPE,表示的是该包装类的基本类型
Constructor declaredConstructor = cls.getDeclaredConstructor(String.class, String.class, Double.TYPE);

使用反射获得一个对象实例

例如

Student student = cls.newInstance();

使用反射获得属性名(字段名,成员变量名)

以下的方法都是返回Field数组

  • getDeclaredFields()
    返回所有的字段名,但不包括继承的属性名(字段名,成员变量名)
  • getFields()
    返回所有的字段名,包括继承的属性名(字段名,成员变量名)

使用反射获得方法

以下两种方法均是返回一个Method数组

  • cls.getMethods()
    包括继承的方法
  • cls.getDeclaredMethods()
    不包括继承的方法
  • cls.getMethod(String name,parameterTypes)
    返回指定方法名的Method,name为方法名,后面参数为该方法的参数列表,参数列表记得按照顺序

获得类中某个方法的返回类型

  • method.getReturnType()
    返回该方法的返回类型,是一个Class对象(返回类型对应的class)
//如
public String hello(){...
};
method.getReturnType();//返回的就是java.lang.String
  • method.getGenericReturnType()
    返回的是一个Type类对象

    使用反射调用方法

  • method.invoke(Object o...)
    Object是参数列表

获得类中getXxx方法并调用

获得所有的字段名,根据字段名拼接成正确的getXxx方法名,之后获得指定方法名的Method,之后调用即可

Student student = new Student();
Class<? extends Student> c1 = student.getClass();
Field[] declaredFields = c1.getDeclaredFields();
for (Field declaredField : declaredFields) {String name = declaredField.getName();//使用IDEA生成的set/get方法都是遵循驼峰命名法,我们的命名也得按照驼峰命名法//这样,我们只需要把第一个单词的开头字母转为大写的字母即可获得正确的方法名,之后调用即可String a = name.substring(0, 1).toUpperCase();//首字母大写String b = name.substring(1);//截取剩余的字符串Method method = c1.getMethod("get" + a+b);//拼接,并查找匹配的方法method.invoke();
}

list 迭代器

listiterator和iterator
listiterator继承iterator,是iterator的增强版
listiterator可以双端遍历,通过list.listIterator()方法返回,方法中可以带一个指定下标的数,比iterator要方便

如果想要从末尾向前找,可以定义迭代器的开始为list的末尾,之后往前查找

ListIterator listIteratorlists.listIterator(lists.size());
while (listIterator.hasPrevious()) {System.out.println(listIterator.previous());
}

转载于:https://www.cnblogs.com/kexing/p/10617400.html

Java 学习笔记 反射与迭代器相关推荐

  1. Java学习笔记——反射

    1.反射概述 Java反射机制:是指在运行时去获取一个类的变量和方法信息.然后通过获取到的信息来创建对象,调用方法的一种机制.由于这种动态性,可以极大地增强程序的灵活性. 2.获取Class类的对象 ...

  2. Java学习笔记(原创)

    Java学习笔记(原创) 2011-12-01 16:37:00|  分类: Java|举报|字号 订阅 下载LOFTER客户端 基本知识 一. Java基础 1. java语言的特点: ①简单:没有 ...

  3. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  4. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  5. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  6. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

  7. Java学习笔记 2021-7-1 2021-7-8

    Java学习笔记 Stream流 1 Stream流的体验 stream流的生成操作 stream中间流操作 filter limit和skip concat和distinct sorted map和 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

最新文章

  1. 函数图像轻松画:教你用永中图象
  2. 使用Swagger创建Api
  3. java基础IO BIO、NIO、AIO的区别
  4. 企业战略:前瞻性决定发展性
  5. Android Json解析与总结
  6. android坐侧菜单栏,SlidingLayoutDemo android左侧菜单栏的实现 - 下载 - 搜珍网
  7. P1395 会议[链式前向星板](树的最小重心点+所有点到重心距离的和)
  8. Spring整合Redis作为缓存
  9. oracle 8i漏洞渗透,IT新聞-Oracle 8i及多米諾服務器有安全漏洞
  10. POWERBUILDER -- PB通过URL下载局域网或者互联网上的图片或者文件
  11. 关于ajax同步状态及sucess,complete的顺序的理解
  12. 深度学习在推荐领域的应用:Lookalike 算法
  13. sed用法大全(2) 删除
  14. 大数据时代如何保障数据安全
  15. Linux服务器EDAC CE memory read error
  16. 图像缩放--双线性内插法及其python实现(图文代码)
  17. Mybatis 主键插入回显
  18. ananconda离线安装.tar.bz2包
  19. 锁定计算机会使计算机休眠吗,计算机休眠,保持会话。
  20. Subscriber class XXX and its super classes have no public methods with the @Subscribe annotation

热门文章

  1. 计算机网络知识点4——计算机网络性能
  2. java getSource()和 getActionCommand()
  3. windows 关闭粘滞键-解决Microsoft Remote Desktop输入自动变为快捷键问题
  4. Excel 技巧篇-公式实现在指定范围内生成指定小数位的随机数
  5. 单片机编程之联合体(union)的妙用
  6. OpenCV中矩阵的归一化*(Normalize函数)
  7. warpPerspective函数
  8. apache mysql php实现最大负载的方法_如何架设高性能nginx+php+mysql搭配的服务器,解决高并发问题...
  9. 【简明教程】windows下xgboost安装到python
  10. 第二章:2.2 LTI系统解的分析