类反射1

Java语言的反射(Reflection)机制

1.在运行时判断任意一个对象所属的类;

2.在运行时构造任意一个类的对象;

3.在运行时判断任意一个类所具有的成员变量和方法;

4.在运行时调用任意一个对象的方法;

5.生成动态代理。

在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中

1.Class类:代表一个类。

2.Field类:代表类的成员变量(成员变量也称为类的属性)。

3.Mathod类:代表类的方法。

4.Contructor类:代表类的构造方法。

5.Array类:提供了动态创建数组,以及访问数组元素的静态方法。

copy(Object object)方法依次执行以下步骤

(1).获取对象的类型

Class classType = object.getClass();

System.out.println("Class:"+classType.getName());

在java.lang.Object类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型。Class类是Reflection API中的核心类,有以下方法。

1.getName();获得类的完整名字。

2.getFields();获得类的public类型的属性。

3.getDeClaredFields();获得了哦的所有属性。

4.getMethods();获得类的public类型的方法。

5.getDeclaredMethods();获得类的所有方法。

6.getMethod(String name,Class[] patameterTypes);获得类的特定方法,name参数指定方法的名字,parameterTypes参数指定方法的参数类型。

7.getConstrutors();获得类的public类型的构造方法。

8.getConstrutor(Class[] parameterTypes);获得累的特定构造方法,parameterTypes参数指定构造方法的参数类型。

9.newInstace();通过类的不带参数的构造方法创建这个类的一个对象。

(2)通过默认的构造方法创建一个新的对象:

Object objectCopy = classType.getConstructor(new Class[]{}.newInstance(new Object[]{}));

以上代码先调用Class类的getConstructor()方法获得一个Constructor对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。

(3)获得对象的所有属性:

Fiel fields[] = classType.getDeclaredFields();

<script charset="UTF-8" src="<%=request.getContextPath()%>/js/teledial.js" ></script>

<input type="text" id="numbers" name="numbers">

反射能使您能够运行时接入广泛的类信息,它甚至能是您能够读写字段,调用运行时选择的类的方法。

Class clas = MyClass.class;

类装入器来查找类信息。

//name is the class name to loadClass clas = null;

try{

clas = Class.forNmae(name);

}catch(ClassNotFoundException ex){

//handle exception case

//use the loaded class

}

时间: 2024-11-05 18:36:01

类反射1的相关文章

Java 类反射机制分析

一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 在Java中的反射机制,被称为Reflection.(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了.)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法.Reflection机制

javaEE之-----------类反射直接封装前台传过来的参数

在JavaEE  WEB中,我们收集form表单传过来的数据,通常是采用值对象的方式,一一去获取,封装,然后将值对象传到后台进行使用. 如: <span style="font-size:18px;"> String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); String id =request.getParameter(&qu

java高级值类反射

 类反射 类反射,这是属于java高级的技术了,如果把这个学好了,那么你的java学习之路就上了一个台阶了. 一.什么是类反射? 1.JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调           用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制. 2.反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作

Java---类反射(2)---类反射加强

经过前面的一篇博客,Java-类反射(1),相信大家对类反射有了一定的了解了. 下面来进行对类反射的加强,了解一下怎么通过类反射去new一个对象, 怎么通过类反射去访问其他类的方法. 怎么通过类反射去访问其他类的成员变量. 大家也许认为一个类的私有方法,私有的成员变量是其他类访问不到.但是,类反射是可以通过暴力访问去访问的. 还有:最后要模拟Java内省的功能 类的调用(调用类中的成员) ★ 构造类对象 使用构造器新建对象.根据指定的参数类型找到相应的构造函数,传入相应参数调用执行,以创建一个新

java之 ------ 类反射【详解】

一.什么是类反射 ★JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动 态调用对象的方法的功能称为Java语言的反射机制. 反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作程序的内部属性.例如,使用它能获得Java类中各成员的名 称并显示出来. Java的这一能力在实际应用中应用得很多,在其它的程序语言中根本就

java对枚举的类反射使用

import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang3.reflect.MethodUtils; /** * * <strong>功能:</strong>枚举使用工具 * <strong>作者:</strong>Gary Huang * <strong>日期:<

类 反射

# 对象 = 类名() # 过程: # 类名() 首先 会创造出一个对象,创建了一个self变量 # 调用init方法,类名括号里的参数会被这里接收 # 执行init方法 # 返回self # 对象能做的事: # 查看属性 # 调用方法 # __dict__ 对于对象的增删改查操作都可以通过字典的语法进行 # 类名能做的事: # 实例化 # 调用方法 : 只不过要自己传递self参数 # 调用类中的属性,也就是调用静态属性 # __dict__ 对于类中的名字只能看 不能操作 # @proper

类反射,用于JDBC

三种获取字节码对象的方法,获取的都是同一个,因为保存的对象只有一个 Student s = new Student(); Class  c1 = Student.class; Class  c2 =s.getClass(); Class  c3 = Class.forName("com.test.reflector.Student"); 重点是第三种获取对象的方法 例子的隐藏条件: 有一个Student类,构造方法  public Student(); private Student(

如何利用缓存机制实现JAVA类反射性能提升30倍

一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> 分享者:宜信支付结算部支付研发团队高级工程师陶红 原文首发于宜信支付结算技术团队公号:野指针 在实际工作中的一些特定应用场景下,JAVA类反射是经常用到.必不可少的技术,在项目研发过程中,我们也遇到了不得不运用JAVA类反射技术的业务需求,并且不可避免地面临这个技术固有的性能瓶颈问题. 通过近两年的研究.尝

类反射机制+责任链的设计模式demo

直接贴代码: 反射工具包 package com.zzk.cn; import java.lang.reflect.Method; import java.util.List; /** * Object 处理类 * * @author zhengke.zzk */ public class ObjectInstance { /** * 根据class name 获得 object * * @param className * @return */ public Object getObjectB