前言

Java的反射特性是一项非常强大和有用的功能,它使得我们可以轻松的在运行时观察到类实例的内部状态,并且可以动态的操作实例,从而为Java语言提供更多更灵活的想象空间。随便举几个例子:使用反射可以动态的映射Java对象属性到Json文件属性的操作,这一点无论在FastJson,还是GSON或者是jackson上都体现的淋漓尽致。此外使用反射可以轻松的用在JDBC中完成Java Bean和数据库表的动态适配组装,如我们熟知的hibnate,jpa,等持久化框架也都是利用了这种特性,最后无论是动态代理的AOP,还是OSGI的动态加载都离不开反射的辅助,由此可见反射的强大之处。

反射的类型

Java反射可以获取很多类的信息,如下:

(1)获取实例本身的信息

(2)获取实例的字段

(3)获取实例的构造函数

(4)获取实例的方法

(5)获取实例的私有的字段和方法

(6)获取实例的注解信息

(7)获取实例里面的数组

(8)获取实例的泛型类型

(9)获取实例的模块类型

(10)配合实现动态代理

(11)配合实现动态类的加载和热加载

一个简单的反射例子

下面是一个获取类里面所有方法的简单功能:

package reflection;

import java.lang.reflect.Method;

public class ReflectionDemo1 {

public void m1(){

}

public void m2(){

}

public void m3(){

}

public static void m4(){

}

public static void main(String[] args) {

Method[] methods=ReflectionDemo1.class.getMethods();

for(Method method:methods){

System.out.println(method.getName());

}

}

}

输出如下:

main

m4

m3

m1

m2

wait

wait

wait

equals

toString

hashCode

getClass

notify

notifyAll

注意,从上面的输出中我们能够看到,除了我们自定义的方法外,还有来自继承父类Object的方法也会被打印输出,另外我们注意到wait方法被输出了三次,这一次因为在Objec类里面,这个方法有三个重载,所以被输出了三次,当然通过反射的API,我们也是可以获取到每个重载方法有几个参数,以及参数的类型是什么。

总结

本篇文章主要简单的介绍了Java反射技术基本功能和应用场景,Java反射技术核心都是围绕着Class这个类展开的,所有反射可以获取到的信息都在Class类里面可以找到对应的API和方法,学习和了解反射技术是非常有用的,将有助于看清很多高级功能的底层原理,凡事有利必有弊,反射在带来灵活性的同时,也带来了一定的弊端比如对封装性的破坏以及反射自身调用性能低下等问题,所以在实际应用中应该权衡考虑,因地制宜,后面我们会结合具体的例子和场景来进一步介绍反射相关的内容。

java 里面怎么截取倒数第几个字_Java反射是什么相关推荐

  1. java截取倒数后六位的字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  2. java截取倒数后六位的字符串_java 字符串截取的三种方法(推荐)

    众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...

  3. java字符串截取--截取倒数第三个指定字符之后的字符串

    截取倒数第三个"/"之后的字符串 public static String getThirdLocation(String url){//index为最后的"/" ...

  4. java字符串截取--截取倒数第二个指定字符之后的字符串

    截取倒数第二个"/"之后的字符串 String path="/home/henry/Desktop/1.txt";//获得"Desktop/1.txt ...

  5. Java,SQL 截取字符串substring

    一.Java截取字符串 substring 1.方法一: public String substring(int beginIndex, int endIndex) 该方法用于截取字符串中,从begi ...

  6. java正则截取xml节点_实例讲述Java使用正则表达式截取重复出现的XML字符串功能...

    Java使用正则表达式截取重复出现的XML字符串功能示例 本文实例讲述了Java使用正则表达式截取重复出现的XML字符串功能.分享给大家供大家参考,具体如下: public static void m ...

  7. JAVA——读取文本文件的倒数第N行(模拟Linux中tail命令)

    解决方案 1.引入jar包commons-io.jar /*** 读取文件的倒数第3行,并打印其内容*/import java.io.File; import java.io.IOException; ...

  8. java利用正则截取字符串中的数字

    java利用正则截取字符串中的数字 String str = "xxx第47297章33";String regex = "\\d*";Pattern p = ...

  9. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

最新文章

  1. linux发行版 以及 包管理方式
  2. GoLand 2019.1 发布 RC 候选版
  3. scrapy-splash抓取动态数据例子三
  4. mysql主从结构主数据库_mysql主从结构主数据库中的日志
  5. 秋季海报设计元素|水彩手绘纹理植物素材,从人群中脱颖而出。
  6. Java开发学习教程之对象的创建与使用
  7. 微服务学习之消费模块【Hoxton.SR1版】
  8. 进程和线程的基本概念与区别
  9. 爱普生R230打印机清零
  10. 小米路由器安装MT工具
  11. 用计算机改手机电量,三分钟更换iPhone 6虚标电池,老手机又焕发青春了
  12. 众包专访:高质量的开源众包
  13. 模拟器:思科 给路由器配置IP地址和子网掩码
  14. Error: Unable to execute “/usr/bin/vmware-uninstall-tools.pl.终极解决方案
  15. Web端兼容性测试--浏览器/平台/分辨率
  16. pubmedy安装不聊了_在PubMed基本检索框中输入immunology检索出的文献为1115106 篇,这是利用了PubMed哪一种检索技术?...
  17. 我的世界科学计算机,在我的世界打造一台计算机有多难?复旦大神花了一年
  18. mac下如何将adobe acrobat reader dc设为.pdf的默认打开方式?
  19. Ardunio开发实例-红外遥控器解码与LED控制
  20. Android 原生Gallery3d的优化系列--1

热门文章

  1. 深入浅出 Golang 协程池设计
  2. Linux基础知识点
  3. servlet精华讲解
  4. ThinkPHP 数据库操作(一) : 连接数据库
  5. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码
  6. 百度地图Map属性和方法
  7. Timus 1741
  8. python全栈开发 * 04 * 180604
  9. lvm基本知识与常用命令
  10. hadoop的基本搭建