`
实学实战
  • 浏览: 15632 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

java反射机制模式

 
阅读更多

Java Reflection

1.JAVA反射机制:

JAVA反射机制是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。

1.1Java反射机制的好处:

Java反射机制通过new来实例化对象只需要(包.类),这样使得反射机制灵活性更高。




1、获取Class对象属性

package com.reflection.calss;

public class Book {
	private String name;
	private int no;
	private String type;
   
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	   
   
}

2、测试类:

package com.reflection.calss;


/*
 * 第一: 反射   Class 对象的机制与实现:
 * */
public class Test {
	public static void main(String[] args) {
		Class dom1 = null;
		Class dom2 = null;
		Class dom3 = null;
	
		try {
			//第一种:最重要
			dom1 = Class.forName("com.reflection.calss.Book");
			System.out.println("第一种:"+ dom1);
			//第二种
			Book book = new Book();
			//Object bk = book.getClass();
			Class<?> bk = book.getClass();
			System.out.println("第二种:"+ bk);
			//第三种
			dom3 = Book.class;
			System.out.println("第三种:"+ dom3);
			
			//先获取class对象   再获取实例化对象
			Book book3 = (Book) dom3.newInstance();
			System.out.println("实例化对象和内存地址:"+ book3);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}


3、Method对象的机制与实现

package com.reflection.method;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MethodDom {
	
	//获取方法名   
	public void  MethodTest(Object ob){
		Class cl = ob.getClass();
		Method[]  me = cl.getDeclaredMethods();
		for(Method mm : me){
			System.out.println("方法名称:" + mm.getName() );
			System.out.println("修饰符:" + mm.getModifiers() );
			System.out.println("" + mm.getReturnType() + " \n  ");
		}
	}
	
	//获取实例化方法   
	public void showuser(Object ob){
		
		try {
			//方法名  无参数
			Class  cl = ob.getClass();
			Method me= cl.getMethod("getName", null);
			me.invoke(ob, new Object[0]);
			//方法名 一参数
			Method ms = cl.getMethod("setName", String.class);
			ms.invoke(ob, "set 调用");
			//方法名  多参数
			Class[] cll = {String.class, int.class};
			Method m1 = cl.getMethod("Test", cll);
			Object[] boj = {"哈哈哈",123};
			m1.invoke(ob, boj);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}	
}



4、测试类:

package com.reflection.method;

import com.reflection.field.Book;

public class TestMethod {
	public static void main(String[] args) {
	    Book ob = new Book();
	    ob.setName("跑男第十八季");
	    ob.setType("娱乐");
	    ob.setNo(90);

	    MethodDom te = new MethodDom();
	    //te.MethodTest(ob);
	    te.showuser(ob);
	    System.out.println(ob.getName());
	    System.out.println(ob.getName());

   }
}


5、Field 对象的机制与实现
package com.reflection.field;

import java.lang.reflect.Field;

public class ShowField {
	
		//第一种:方法  接收传递过来的class对象
		public void show(Class c){
			//getFields只能获取共有属性    getDeclaredFields可以获取私有属性
			Field[] fi = c.getDeclaredFields();
			for(Field ff : fi){
				System.out.println(ff.getName());
				System.out.println(ff.getType());
			}
		}
		
		//第二种: 接收传递过来的实体类对象   对象的属性  和 值
		public void obshow(Object ob){
			Class  cs = ob.getClass();
			Field[] fo = cs.getDeclaredFields();
			
			for(Field e : fo ){
				try {
					//私有属性可见
					e.setAccessible(true);
					System.out.println("名:"+e.getName()+ "  "  + "值:"+e.get(ob));
					
					
				} catch (IllegalArgumentException e1) {
					e1.printStackTrace();
				} catch (IllegalAccessException e1) {
					e1.printStackTrace();
				}
			  }
		}	
}



6、测试类:

package com.reflection.field;

public class Test {
	public static void main(String[] args) {
		Book bo = new Book();
		bo.setNo(1);
		bo.setName("斗破苍穹");
		bo.setType("玄幻");
		
		ShowField ft = new ShowField();
	    ft.show(Book.class);
		ft.obshow(bo);
	}
}






看看这篇文章


反射机制和工厂设计模式的使用(http://blog.csdn.net/javawebrookie/article/details/49686587)


简单工厂设计模式(http://blog.csdn.net/javawebrookie/article/details/49682021)






分享到:
评论

相关推荐

    java反射机制.md

    深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破

    Java反射机制Demo

    ### Java反射机制详解 #### 一、什么是Java反射机制? Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的...

    java反射机制应用

    ### Java反射机制应用详解 #### 一、Java反射机制简介 Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    java 反射工厂模式

    反射机制允许我们在运行时动态地获取类的信息并操作对象,而工厂模式是一种设计模式,它提供了一种创建对象的最佳方式,使得代码更加灵活且易于维护。 **Java反射** Java反射API提供了一种在运行时检查类、接口、...

    java反射机制PPT

    Java反射机制是Java编程语言中一项强大的工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。反射机制的核心在于能够在运行时动态地获取类的信息,并且可以动态调用对象的方法,创建对象,甚至修改对象...

    JAVA的反射机制与动态代理

    Java的反射机制与动态代理是Java编程中两个非常重要的高级特性,它们在许多实际场景中发挥着关键作用,如框架开发、插件系统、元数据处理等。下面将详细讲解这两个概念及其应用。 首先,Java的反射机制允许我们在...

    JAVA反射机制自定义框架测试代码

    Java反射机制是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在构建框架和库时尤为有用。本篇文章将...

    Java反射机制说明

    Java反射机制是Java编程语言的核心特性之一,它赋予了程序在运行时检查和操作对象的能力。反射机制使得Java代码能够动态地获取类的信息(如类名、方法、字段),并且能够在运行时创建和调用对象的方法,这为编程带来...

    Java反射机制-PDF文档,详述了反射机制的原理和使用方法

    7. 动态代理:Java反射机制可以结合java.lang.reflect.Proxy类创建动态代理,实现代理模式,为接口的方法提供动态处理逻辑。 在实际开发中,反射机制常用于以下场景: - 插件化开发:通过反射加载插件中的类,实现...

    java反射机制.rar

    通过以上内容,我们可以看出Java反射机制不仅能够提供对类和对象的动态操作,还为实现诸如动态代理这样的高级编程模式提供了基础。然而,由于反射操作具有一定的性能开销,并可能破坏封装性,因此在使用时应谨慎权衡...

    java反射原理详解

    Java反射机制是Java语言的一种强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的类(如Constructor、Method、Field)以及...

    java反射机制学习(五):工厂模式

    在本篇“java反射机制学习(五):工厂模式”中,我们将探讨如何利用反射与工厂模式结合,提升代码的灵活性和可扩展性。 首先,工厂模式是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。传统的工厂模式...

    Java反射机制和动态代理

    主要讲述Java反射机制与设计模式之一:代理模式的原理与应用;同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践。

    JAVA 反射机制与动态代理ppt

    总的来说,Java反射机制和动态代理是Java平台强大而灵活的特性,它们使得Java程序能够在运行时具有更高的灵活性和可扩展性。然而,使用反射也可能带来性能开销和安全风险,因此在实际应用中需要权衡利弊,合理使用。

    Java反射机制实践

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息。这种动态类型的能力使得Java代码能够处理未知或未提前定义的对象,增强了程序的灵活性和可扩展性。在"Java...

    Java反射机制概述.pdf

    ### Java反射机制概述 Java反射机制是指Java程序在运行时,可以动态地获取一个类的信息以及调用其方法的机制。这是Java语言的一个重要特性,允许程序在运行时检查和修改类的行为。 #### 反射机制的基本操作 在...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、对象、字段和方法。在本教程中,我们将深入探讨Java反射机制的核心概念、功能、API以及应用场景。 **3.1 应用场景** 反射机制在...

    Java反射机制的实现详解

    Java反射机制是Java语言提供的一种强大的工具,允许程序在运行时检查并操作类和对象的内部属性。通过反射,开发者可以在程序执行过程中动态地创建对象并调用它们的方法,这大大增强了代码的灵活性和可扩展性。在Java...

    java反射机制.pdf

    总之,Java反射机制是Java动态特性的基石,为开发者提供了强大的功能,同时也带来了对设计模式、框架开发和代码优化等方面的深刻影响。理解并合理运用反射机制,对于提升Java程序的灵活性和扩展性具有重要意义。

Global site tag (gtag.js) - Google Analytics