java反射基础知识(三)
原文地址:http://tutorials.jenkov.com/java-reflection/index.html
http://www.cnblogs.com/penghongwei/p/3299688.html
*By Jakob Jenkov
Java的反射机制使得它可以在运行时检查类、接口、字段、方法,而在编译时并不不知道它们的名称。也可以通过反射实例化新的对象,调用方法,get/set字段的值。
Java的反射机制非常强大而且非常有用。对实例而言,在运行时可以映射对象到数据库中的表,就和 Butterfly Persistence 做的一样。或者,在运行时将脚本中的语句映射到真实对象上的方法调用,就和 Butterfly Container 在解析它的配置脚本时做的一样。
在互联网上已经有很多关于Java反射的教程了。然而,包括Sun公司提供的在内,大多数Java反射教程都只涉及了Java反射的表面和Java反射机制的可能性。
本教程将比我之前看到的大多数教程更深层次的触及Java的反射机制。我将解释Java反射的基本知识,包括如何使用数组、注解、泛型、动态代理、类的动态加载和重新加载。也会告诉你该如何做一些比较具体的事情,如读取类的所有getter方法,或者访问类的私有字段和方法。本教程也会澄清一些在运行时哪些泛型信息可用的困惑。有些人声称,所有的泛型信息在运行时都丢失了。这中理解是不对的。
本教程将基于Java 6介绍Java的反射机制。
- Java反射例子
在这里有一个快速使用Java反射的例子展示了使用反射时的样子:
1 Method[] methods = MyObject.class.getMethods();
2 for(Method method : methods){
3 System.out.println("method = " + method.getName());
4 }
在这个例子中得到了MyObject的Class对象。这个例子通过Class对象获取了MyObject类中的方法列表,并且迭代打印出了各个方法的方法名。
这一切究竟是如何工作将在整个教程的剩余部分中进一步阐述(在其他文章中)。
- 目录
这是一个本教程到目前为止涵盖的主题列表:
- Java反射——引言 http://www.cnblogs.com/penghongwei/p/3299688.html
- Java反射——Class对象http://www.cnblogs.com/penghongwei/p/3300047.html
- Java反射——构造函数http://www.cnblogs.com/penghongwei/p/3300063.html
- Java反射——字段http://www.cnblogs.com/penghongwei/p/3300073.html
- Java反射——方法http://www.cnblogs.com/penghongwei/p/3300078.html
- Java反射——Getter和Setter http://www.cnblogs.com/penghongwei/p/3300081.html
- Java反射——私有字段和私有方法http://www.cnblogs.com/penghongwei/p/3300084.html
- Java反射——注解http://www.cnblogs.com/penghongwei/p/3300087.html
- Java反射——泛型http://www.cnblogs.com/penghongwei/p/3300091.html
- Java反射——数组http://www.cnblogs.com/penghongwei/p/3300094.html
- Java反射——动态代理http://www.cnblogs.com/penghongwei/p/3300098.html
- Java反射——类的动态加载和重新加载http://www.cnblogs.com/penghongwei/p/3300103.html
java反射基础知识(三)的更多相关文章
- java反射基础知识(一)
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- java反射基础知识(五)反射应用实践
详解Java反射各种应用 Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Cl ...
- java反射基础知识(四)反射应用实践
反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...
- java反射基础知识(二)
1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...
- Java的基础知识三
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Java反射基础知识
反射机制就是可以把一个类,类的成员(属性.方法)当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候可以动态的去操作它们. 所有的Java类都继承了Object类,在Object类中定义了一个 ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- 什么才是java的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
随机推荐
- linux web.py spawn-fcgi web.py 配置
本来要用uwsgi,但是...介于以前说过...这台服务器略老...redhat 3的系统...确实很老,没法用yum,没法安装很多东西,打算自己编译uwsgi,但是编译各种错误...花了快一天,最后 ...
- hdu6078 Wavel Sequence dp+二维树状数组
//#pragma comment(linker, "/STACK:102400000,102400000") /** 题目:hdu6078 Wavel Sequence 链接:h ...
- Docker是用来干什么的?【快速入门】
Docker从去年开始不仅能在Linux下运行 ,还支持windows.osX等主流系统. 下面的例子我自己经常使用,当然你有更好的案例也可以分享给我. 尝试新软件 对开发者而言,每天会催生出的各式各 ...
- C++ 函数模板一(函数模板定义)
//函数模板定义--数据类型做参数 #include<iostream> using namespace std; /* 函数模板声明 1.函数模板定义由模板说明和函数定义组成,并且一个模 ...
- 第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全
封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全 效果图 html <div id="reg"> <h2 class ...
- 8148 add spi driver
http://blog.csdn.net/zouwen198317/article/details/8452209 http://e2e.ti.com/support/dsp/davinci_digi ...
- iOS开发中“此证书的签发者无效”的解决方式
iOS开发过程中有时候会出现证书所有变成无效,例如以下图 然后进行打包的时候会提演示样例如以下警告: 解决方法: 第一步: 下载https://developer.apple.com/certif ...
- Pat(Advanced Level)Practice--1026(Table Tennis)
Pat1026代码 题目描写叙述: A table tennis club has N tables available to the public. The tables are numbered ...
- Java并发框架——AQS之怎样使用AQS构建同步器
AQS的设计思想是通过继承的方式提供一个模板让大家能够非常easy依据不同场景实现一个富有个性化的同步器.同步器的核心是要管理一个共享状态,通过对状态的控制即能够实现不同的锁机制. AQS的设计必须考 ...
- VC++ 在Watch窗口显示GetLastError值以及详细信息
You can display the value GetLastError() will return by putting "@err" in your watch windo ...