反射实践

您是否考虑过这些问题: IDE 如何列出类的所有详细信息,包括私有字段和私有方法? IDE 还能够 列出 JAR 文件中的类(及其详细信息),它们是如何做到的?

下面是反射的一些例子。

本文将阐述如何在编程中应用反射,以及如何在高级抽象中应用反射。我们将从一个十分简单的例子 入手,然后创建一个简单的程序来使用反射。

什么是反射?

反射是一种机制,它允许动态地发现和绑定类、方法、字段,以及由语言组成的所有其他元素。列出 类、字段和方法只是反射的基本应用。通过反射,我们实际上还能够在需要时创建实例、调用方法以及访 问字段。

大多数程序员曾使用过动态类载入技术来载入他们的 JDBC 驱动程序。这种载入方法类似于下面这一 段动态载入 MySQL JDBC 驱动程序实例的代码片段:

Class.forName("com.mysql.jdbc.Driver").newInstance();

使用反射的原因和时机

反射提供了一个高级别的抽象。换句话说,反射允许我们在运行时对手头上的对象进行检查并进行相 应的操作。例如,如果您必须在多种对象上执行相同的任务,如搜索某个实例。则可以为每种不同的对象 编写一些代码,也可以使用反射。或许您已经意识到了,反射可以减少近似代码的维护量。因为使用了反 射,您的实例搜索代码将会对其他类起作用。我们稍后会谈到这个示例。我已经将它加入到这篇文章里, 以便向您展示我们如何从反射中获益。

动态发现

下面我们从发现一个类的内容并列出它的构造、字段、方法开始。这并不实用,但它能让我们直观地 了解反射 API 的原理及其他内容。

创建 Product 类,如下所示。我们的所有示例都保存在名为 ria 的程序包中。

package ria;
public class Product {
  private String description;
  private long id;
  private String name;
  private double price;
  //Getters and setters are omitted for shortness
}

时间: 2024-08-03 05:57:41

反射实践的相关文章

JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践

JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识Class类 想要反射,你就必须要了解一个类--Class,我们知道,java程序中的各个java类都属于同一事物,我们通常用Classliability描述对吧,反射这个概念从JDK1.2就出来了,历史算是比较悠久了,这个Class可不是关键字哦,这个是一个类,他代表的是一类事物: 我们归根结底就

Java反射机制应用实践

引言 Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影.通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题.本文我们就从实际应用的角度出发,来应用一下Java的反射机制. 反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先

反射调用private方法实践(php、java)_php实例

单测中有个普遍性的问题,被侧类中的private方法无法直接调用.小拽在处理过程中通过反射改变方法权限,进行单测,分享一下,直接上代码. 简单被测试类 生成一个简单的被测试类,只有个private方法. 复制代码 代码如下: <?php/** * 崔小涣单测的基本模板. * * @author cuihuan * @date 2015/11/12 22:15:31 * @version $Revision:1.0$ **/class MyClass {/** * 私有方法 * * @param

JAVA核心层--反射--动态代理

本文发表于2010年,时间较早,部分问题解释不是十分准确,所以需要进一步了解,请参看2012年版本: java之架构基础-动态代理&cglib 要在JAVA技术上突破普通的层面,并拥有一翻设计理念的高度,除了要有很好的设计思维之外,反射在适当的使用下,将会把框架做得非常清晰,并且代码编写也非常简便. 在面向对象的编程中,我们为什么要忌讳去大量使用if else switch语句,因为这样写是将逻辑硬编码了,JAVA的思想就是将其配置化,一旦可配置化后,就逐渐可管理化,并随着产品的成熟逐步实现自动

Java中的类反射机制

一.反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩.其中LEAD/LEAD++ .OpenC++ .MetaXa和OpenJava等就是基于反射机制的语言.最近,反射机制也被应用到了视窗系统.操作系统和文件系统中. 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学

实例jie如何提高Java Web 服务性能优化实践

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息.重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点.本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景. Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作.Web 服务(Web Service)是基于 X

DockOne微信分享( 一零二):基于容器的日志管理实践

本文讲的是DockOne微信分享( 一零二):基于容器的日志管理实践[编者的话]业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集.存储以及告警等方面的实践经验. 2013年以来Docker迅速火了起来,它的理念带来了非常大的便利性,不过实际应用中会发现还有监控.日志.网络等问题尚待解决,本文会结合实例分享数人云做容器日志系统的经验. 基于ELK的日志管理系统架构

机房重构之配置文件、反射和抽象工厂

    本次机房重构过程中用到了反射 + 配置文件,目的还是挺明确的:就是为了更换数据时方便,遵循开放 - 封闭原则,解决了可维护和可扩展的问题.      以下就重构机房登录为例来看看配置文件 + 反射的用法.机房收费系统登录用到的数据库表是 User_info 表(用户表).  下面看看配置文件 + 反射 + 抽象工厂在登录时访问数据库 User 表时的用法:      1. 先进行配置文件操作     步骤:( 1 )在 VS 资源管理器的项目 UI 中,打开App.config 文件.

淘宝网前台应用性能优化实践

本文曾发表于2013年4月的<程序员>杂志 近年来,随着用户数和PV的增加,淘宝网的后端服务器数量增长很快:并且我们知道,Web页面延迟时间和转化率之间有着直接的关联.出于提升系统吞吐量.降低成本.减少页面延迟.提升用户浏览体验.提高交易转化率的考虑,淘宝网在性能优化领域做了很多尝试.本文将从应用性能分析.基础设施优化.应用自身优化.前端性能优化这四个方面,对淘宝网的优化尝试做一个总结. 应用性能分析 1. 前台应用介绍 淘宝网前台应用是指商品详情.店铺.购物车等买家直接可以看到和使用的应用,