`
whiteotiger
  • 浏览: 9975 次
  • 性别: Icon_minigender_1
  • 来自: 南通
最近访客 更多访客>>
社区版块
存档分类
最新评论

反射的实现

阅读更多
    Java运行通过程序化的方式间接对Class进行操作,Class文件由类装载期装载后,在JVM中形成一份描述Class结构的元信息,通过对该元信息对象,可以获得Class的结构信息,如构造函数,属性,方法等,java允许用户用这个Class相关的元信息对象间接调用class对象的功能。
    如下一个类Car,和利用反射机制调用他的类ReflectTest
package reflect;
//实体类
public class Car {
	private String  brand;
	private String color;
	private int maxSpeed;
	/**
	 * 构造方法
	 */
	public Car() {
		// TODO Auto-generated constructor stub
	}
	/**
	 * 无参构造方法
	 */
	public Car(String  brand,String  color,int maxSpeed){
		this.brand=brand;
		this.color=color;
		this.maxSpeed=maxSpeed;
		
	}
	/**
	 * 无参方法
	 * @return
	 */
	
	public void introduce(){
		
		
		System.out.println("brand="+brand+";color="+color+";maxSpeed="+maxSpeed);
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public int getMaxSpeed() {
		return maxSpeed;
	}
	public void setMaxSpeed(int maxSpeed) {
		this.maxSpeed = maxSpeed;
	}
	
	

}


package reflect;
//反射调用类
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import org.omg.CORBA.Current;

public class ReflectTest {
	
	public static Car initByDefaultConst() throws Throwable {
		//通过类加载器加载类对象
		ClassLoader loader =Thread.currentThread().getContextClassLoader();
		Class clazz = loader.loadClass("reflect.Car");
		
		//获取类的默认构造器,构造类
		Constructor cons = clazz.getConstructor();
		Car car = (Car) cons.newInstance();
		
		//通过反射方法设置属性
		Method setBrand = clazz.getMethod("setBrand", String.class);
		setBrand.invoke(car, "玛莎拉蒂");
		Method setColor= clazz.getMethod("setColor", String.class);
		setColor.invoke(car, "红色");
		Method setMaxSpeed =clazz.getMethod("setMaxSpeed", int.class);
		setMaxSpeed.invoke(car, 200);
		return car;
		
	}
	public static void main(String[] args) throws Throwable {
		Car car =ReflectTest.initByDefaultConst();
		car.introduce();
	}

}

分享到:
评论

相关推荐

    利用反射实现类的动态加载

    ### 利用反射实现类的动态加载 #### 反射技术简介 反射是Java语言提供的一种强大特性,允许运行时动态地获取类的信息并操纵类的对象。这种能力使得开发人员能够在编写程序时不确定具体类的情况下,依然能实现对类...

    java反射实现数据库操作Dao

    java反射实现数据库增、删、改、查操作Dao

    实用结合C#反射实现动态定时器定时任务工具含源码

    实用结合C#反射实现动态定时器定时任务工具,可结合XML配置文档,实现独立动态的定时配置;用于定时任务执行、消息推送、WebService任务等;附件为程序源码。工具历经多项目验证,不足之处;欢迎交流指正!

    抽象工厂+反射 实现通用数据源设计

    应用抽象工厂+反射实现通用数据源设计。来源于北大青鸟内部设计模式讲座。

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    在使用反射实现AOP动态代理时,我们也需要注意一些问题。例如,由于代理类是在运行时动态创建的,这可能会影响程序的性能,特别是在频繁调用代理方法的情况下。因此,在实际开发中,需要根据应用场景的性能要求和...

    java反射实现Junit3框架

    在本主题中,我们将深入探讨如何利用Java反射来实现JUnit3框架,即使我们不知道具体的类名。JUnit3是Java单元测试的一个早期版本,它提供了编写和执行测试用例的框架。 首先,理解反射的基本概念是必要的。在Java中...

    自定义Dao,反射实现

    自定义Dao并通过反射实现,虽然比使用ORM框架(如Hibernate、MyBatis)更繁琐,但可以更好地控制SQL语句,避免了不必要的映射配置。这种方法适用于小型项目或对性能有较高要求的场景,同时也为学习Java反射机制提供...

    基于反射实现C#编辑器

    本项目“基于反射实现C#编辑器”聚焦于使用C#编程语言和反射技术来构建一个可扩展的编辑器,这为软件的二次开发提供了一个强大的工具。 C#是一种面向对象的、类型安全的编程语言,广泛应用于Windows桌面应用、Web...

    利用反射 实现一个自制的struts

    接下来,让我们探讨如何使用反射来实现Struts的拦截器。拦截器在Struts中扮演着重要的角色,它们在请求处理前后执行额外的任务,比如验证、日志记录或性能监控。在自制的Struts中,你可以创建一个接口,如`...

    使用反射实现绑定的 ListView

    本篇文章将详细讲解如何使用反射实现绑定的ListView,包括DataSource属性的设置,反射中文列名以及自适应列宽度的实现。 首先,我们要理解反射在Java(以及Android)中的作用。反射允许程序在运行时检查类的信息,...

    java反射实现javabean转json实例代码.docx

    ### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...

    C#net反射实现访问类中的私有变量或者方法

    ### 二、C#反射实现访问类中的私有变量或方法 #### 2.1 示例代码分析 首先,我们来看一下提供的示例代码: ```csharp using System; using System.Reflection; class ChangeValue { private string myValue; ...

    mvc中dao层反射实现

    在本主题“mvc中dao层反射实现”中,我们将探讨如何利用Java的反射机制来实现DAO层的方法。 反射是Java语言的一个强大特性,它允许程序在运行时动态地获取类的信息并调用其方法。在DAO层中使用反射,可以提高代码的...

    利用反射实现JavaBean 的自动赋值

    ### 利用反射实现JavaBean的自动赋值 在软件开发过程中,特别是在Web应用程序的开发中,经常会遇到需要将表单提交的数据绑定到JavaBean对象上的需求。这可以通过多种方式实现,例如使用Spring MVC等框架的自动绑定...

    通过反射实现不同页面的返回

    标题"通过反射实现不同页面的返回"主要涉及到以下知识点: 1. **Android Activity**:Activity是Android应用程序的核心组件,它负责处理用户的交互和显示UI。每个Activity都有自己的生命周期,包括创建、启动、暂停...

    java反射实现Object转json

    对于"java反射实现Object转json"这个主题,我们将深入探讨如何使用反射机制将Java对象转换为JSON格式的数据。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    JAVA反射实现和实现机制

    ### JAVA反射实现和实现机制 #### 反射机制概述 反射是Java中一项重要的特性,它允许我们在程序运行时获取类的信息(如属性、方法等)并操纵它们。这一特性为开发提供了极大的灵活性,同时也带来了一定的学习曲线...

    c++ 反射实现原理代码;

    c++ 反射实现原理代码;c++ 反射实现原理代码;c++ 反射实现原理代码;c++ 反射实现原理代码;c++ 反射实现原理代码;

    反射实现 AOP 动态代理模式(Spring AOP 的实现 原理) - Java 例子 -

    本文将深入探讨Spring AOP的实现原理,以及如何使用反射来实现动态代理模式。 首先,我们需要了解AOP的基本概念。AOP的核心思想是切面,它包含两个主要部分:切点(Pointcut)和通知(Advice)。切点定义了在程序...

Global site tag (gtag.js) - Google Analytics