- 浏览: 156838 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (210)
- java (44)
- javascript (5)
- 网摘 (21)
- 程序人生 (19)
- hibernate (21)
- spring (7)
- struts (1)
- jquery (2)
- mssql (3)
- mysql (3)
- oracle (7)
- 学习日记 (10)
- PowerDesigner (1)
- android (4)
- 调试 (1)
- tomcat (3)
- webapp (1)
- context (2)
- jsp (2)
- 学习 (18)
- 态度 (4)
- 坚持 (4)
- jsf (1)
- ui (1)
- css (1)
- seam (0)
- 转载 (5)
- JNDI (1)
- 创业 (1)
- 公司 (1)
- 方向 (1)
- ETL (1)
- Datastage (1)
- 数据整合 (1)
- 心情,感触 (1)
- 开发 (2)
- 测试 (1)
- 需求 (1)
- 湿身 (1)
- 网购,分类 (1)
- 驾校,转载 (1)
- 中秋,露营 (1)
- 域名 (1)
- 空间 (1)
- 网站程序 (1)
- SolrCloud (1)
- Solr (6)
- 全文库 (1)
- HBase (1)
- Hadoop (1)
- 网络应用 (1)
- 数据结构 (1)
- NoSQL (1)
- jQueryEasyUI (1)
- 面试 (1)
- 三十六计 (1)
- S2S3H4 (1)
- jar (1)
- war (1)
- web 项目 (1)
- Subversion (1)
- TortoiseSVN (1)
- MyEclipse (1)
- eclipse svn插件 (1)
- SQL2005 (1)
- ASP (1)
- 笔记 (2)
- 虚拟器、centOS、jdk、tomcat、nginx (1)
- memcached (1)
- nginx (1)
- telnet (1)
- nfs (1)
- zookeeper (2)
- window (1)
- linux (3)
- cronolog (1)
- web (1)
- mybatis (3)
- 设计模式 (1)
- 测试覆盖率 (1)
- EclEmma (1)
- tomcat7 (1)
- sore (1)
- 时间 (1)
- fackbook (0)
- facebook (1)
- IK (2)
- PKUSUMSU (1)
- openoffice (1)
- pdf (1)
- memcache (1)
- 动态词库 (1)
- 动态同义词 (1)
- centos7.3 (2)
- maven (4)
- 111 (0)
- nexus (2)
- 23种设计模式 (1)
- springboot (1)
- shiro (1)
- redis (1)
- rabbitMQ (1)
- native (1)
- dll (1)
- jasperReports (1)
- ireport (1)
最新评论
-
zhongfenglin:
学车的经历 -
Tiny_小小:
...
网购的选择 -
jrjr200411:
楼主写的好!
面对大公司和小公司的选择 -
feelboy:
说的很好。
每周四十小时,你有多少是在为自己干活?
JAVA反射机制定义:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;生成动态代理。
在java里面使用的反射机制,主要是使用java API里面java.lang.reflect 包下的一些类,自己在使用java的反射机制时发现,用的比较多的是method invoke方法,所以我就这个的使用写成的一个小例子,源码如下:
/** * 测试反射方法 * @author thinkpad * */ public class TestMethod { private String username; public String getUsername() { System.out.println("getUsername()"); return username; } public void setUsername(String username) { System.out.println("uesrname:"+username); this.username = username; } //反射调用方法 public void invoke(Object obj){ try { Class cls = obj.getClass(); Method method= cls.getMethod("setUsername", String.class); Object o = method.invoke(obj, "张三"); //无返回值,为空 System.out.println("o:"+o); Method method2= cls.getMethod("getUsername"); //有返回值不为空 Object o2=method2.invoke(obj); System.out.println("o2:"+o2); Method[] ms = cls.getDeclaredMethods(); //所有方法 for(Method m : ms){ System.out.println("m:"+m.getName()); } Method[] ms2 = cls.getMethods(); //所有public方法 for(Method m : ms2){ System.out.println("m2:"+m.getName()); } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } //适用...来表示数组类型,该参数可以0,1个同类型或本数组类型 public void print(String... strings ){ if(strings != null){ for(String s:strings){ System.out.println("s:"+s); } } }
当然,还有其他的使用,比如字段、构造函数、静态方法等等这些可以
参考:http://blog.csdn.net/njchenyi/article/details/1620939
例外一个反射是我自己在项目中发现的基于接口的,源码如下:
//定义一个接口 public interface ITest {void print(String name);} //定义一个实现类 public class ZsTest implements ITest { public void print(String name) { System.out.println("ZsTest:"+name); } } //定义一个实现类 public class LsTest implements ITest { public void print(String name) { System.out.println("LsTest:"+name); } } //定义一个测试类 public class TestInterface { public void testPrint(Object obj){ ((ITest)obj).print("TestInterface"); } public static void main(String[] args) { TestInterface ti = new TestInterface(); //通过传递不同实现类实现不同的作用 ti.testPrint(new ZsTest()); ti.testPrint(new LsTest()); } }
发表评论
-
JAVA设计模式总结之23种设计模式
2019-01-29 11:18 403网摘:https://www.cnblogs.com/po ... -
框架底层直接用控制器调用dao的笔记
2018-12-20 15:18 409公司框架操作数据库用到三个核心类,BaseDao、Hibe ... -
利用openoffice进行各种格式转换为PDF
2018-09-03 17:18 2553参考:https://blog.csdn.net/liumi ... -
springmvc常用注解标签详解
2018-03-13 20:26 3551、@Controller 在SpringMVC 中,控制 ... -
2017-08-15 SpringMVC框架项目国际化学习的笔记
2017-08-15 11:37 414springMVC的国际化开发方案 1.项目分支,在分支 ... -
memcached 安全端口设置
2017-07-09 23:05 396-- 设置memcached防火墙过滤规则 iptabl ... -
java 设计模式自学的笔记的源码
2017-03-22 15:16 315java 设计模式自学的笔记的源码 -
网摘学习知识
2016-02-01 14:28 453用3000个开源项目搜索Java代码:http://www ... -
参数乱码的解决方法
2015-08-09 09:10 443目前收集到4中方法,中文传参一documentPath为例:1 ... -
清楚代码的注释内容
2015-07-17 15:02 511public class ClearComment { ... -
Java开发环境搭建详解
2014-09-17 14:48 541一。jdk安装与配置 jdk7于3月份刚刚发布,目前ecli ... -
Java程序员常用工具类库
2014-07-07 14:49 487参考网址:http://rensanning.iteye.c ... -
OOA/OOD/OOP
2014-02-11 21:42 461OOA Object-Oriented An ... -
国外程序员推荐:每个程序员都应读的书
2012-06-16 12:52 567“如果能时光倒流,回 ... -
使用 CXF 做 webservice 简单例子
2012-06-16 00:05 807Apache CXF 是一个开放源 ... -
Java源码阅读的真实体会
2012-05-30 21:52 759刚才在论坛不经意间, ... -
axis2的使用
2012-04-01 08:59 1338webservice WebService(Axis2)视频 ... -
SSH整合的几种最常见方式 .
2012-03-22 12:00 1228Spring实例Action的两种方式:1、Delegatin ... -
axis 的使用
2012-03-14 15:49 913一、axis安装1.环境JDK1.5 Servlet Con ... -
2012年1月编程语言排行榜:Objective-C成为年度语言
2012-01-31 10:11 9772012年1月编程语言排行榜:Objective-C成为年 ...
相关推荐
### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...
这个例子展示了反射机制如何帮助我们在不修改源代码的情况下,根据外部输入或配置动态地决定要创建的对象类型和要执行的操作。这对于插件系统、框架设计、单元测试等方面非常有用。同时,反射也带来了性能上的损失,...
通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...
### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...
反射机制的核心在于`java.lang.reflect`包中的几个关键类: 1. `Class`类:代表Java中的任何类,它提供了一系列方法用于获取类的信息,如类名(`getName()`)、公共字段(`getFields()`)、所有字段(`...
Java反射机制是Java语言中一个强大的特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在Java编程中,反射机制为程序提供了灵活的控制,使开发者可以对代码进行更加深入的...
在深入讨论Java反射机制之前,我们需要了解以下几个关键类: - **`java.lang.Class`**:每个类在加载到JVM时都会创建一个`Class`对象,该对象包含了类的信息和类的方法。 - **`java.lang.reflect.Method`**:表示类...
Java反射机制主要是通过以下几个核心类来实现的,这些类都位于`java.lang.reflect`包中: 1. **`Class`类**:表示一个类,是反射机制的基础。通过它可以获取类的各种信息,如类名、超类、接口、字段、方法等。 2. *...
Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括获取类的信息、创建对象、调用方法以及访问和...
Java反射机制的主要作用体现在以下几个方面: 1. **动态加载类**:在程序运行时,可以通过字符串形式的类名动态加载未知的类,这在设计框架和插件系统时非常有用。例如,当第二个程序员未完成其类的编写时,第一个...
### Java反射机制详解 #### 一、反射机制概述 反射机制是Java编程语言的一个核心特性,它允许在程序运行过程中动态地获取类的信息,并能够直接操作这些信息。具体来说,反射使得开发人员可以在运行时: - 获取...
Java反射机制是Java编程语言的一个强大特性,它允许程序在运行时检查自身,并且能够“看”到类的信息(字段、方法等),甚至可以在运行时调用这些方法或修改这些字段的值。这为开发带来了很大的灵活性,同时也增加了...
下面给出几个例子看看 Reflection API 的实际运用: 一、通过 Class 类获取成员变量、成员方法、接口、超类、构造方法等: * 通过 getClass() 方法获取对象的类型。 * 通过 getName() 方法获取类的完整名字。 * ...
### JAVA反射机制详解 #### 反射机制简介 在Java编程语言中,反射是一种非常强大的功能,它允许程序在运行时动态地获取类的信息并直接操作这些类的对象。这一特性极大地提高了程序的灵活性和可扩展性。根据描述,...
在这个例子中,我们加载了`ReflectionExample`类,创建了一个实例,并通过反射访问和修改了私有字段`secret`。 值得注意的是,虽然反射提供了极大的灵活性,但也有一些潜在的问题。例如,反射操作通常比直接调用...
Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者...
总结起来,Java反射是一个强大但需要谨慎使用的特性。它为开发者提供了运行时的灵活性,但也带来了潜在的风险。理解和熟练运用反射,可以极大地提升Java应用程序的动态性和适应性。在实际开发中,要根据需求权衡利弊...
Java反射是Java编程语言中的一种强大机制,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个“Java反射演示Demo”是一个实例,展示了如何利用Java反射API进行各种...