`
iluoxuan
  • 浏览: 580331 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java反射基础-实列

    博客分类:
  • java
 
阅读更多

1:Class<?> ,Class对象时所有类可以实例化出来,多用来反射,得到该类的全部信息

其中?表示,无限参数和类型,避免类型转换

2:实列

首页定义一个Person类

package com.domain;

public class Person {
     private String name;
     private String age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String toString(){
		
		StringBuffer sb = new StringBuffer();
		sb.append("<name>").append(name).append("</name>");
		sb.append("<age>").append(age).append("</age>");
		return sb.toString();
		
	}
     
}

 

2:用反射来实例化Person类,操作该类的属性,方法。

 

package com.reflect;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

import com.domain.Person;

public class Reflect {

	public static void main(String[] args) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
		Class<?> demo = null;
		//所有类的对象其实都是Class类的实列
		demo = Class.forName("com.domain.Person");//得到Person类的Class类对象(尽量用这种方式)
		// demo = new Person().getClass(); 方法2
		//demo = Person.class;
		Person p = (Person) demo.newInstance();//用类名得到person对象

		//拿到本类的所有属性信息,如果实取得父类和实现接口的属性用demo.getFields()方法
		Field[] field = demo.getDeclaredFields();
		for (int i = 0; i < field.length; i++) {
			//权限修饰符
			int mo = field[i].getModifiers();
			String priy = Modifier.toString(mo);

			//属性类型
			Class<?> type = field[i].getType();

			System.out.println("属性的权限--" + priy + "    属性的类型---"
					+ type.getName() + "     属性名---" + field[i].getName());
		}
		
		/*
		 * 調用改Person對象的方法
		 */
		 Object ob = null;
		 ob = demo.newInstance();
		 pset(ob,"Age","11111",String.class);
		 Pget(ob,"Age");

	}

	private static void Pget(Object ob, String att) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		    Method method = ob.getClass().getMethod("get"+att);
		    System.out.println(method.invoke(ob));
		
	}

	private static void pset(Object ob, String att, Object value,
			Class<?> type) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		      Method method = ob.getClass().getMethod("set"+att,type);
		      method.invoke(ob, value);
		
	}

}

结果:

属性的权限--private    属性的类型---java.lang.String     属性名---name
属性的权限--private    属性的类型---java.lang.String     属性名---age
11111
 

 

 

分享到:
评论

相关推荐

    实战java反射机制-让你迅速认识java强大的反射机制

    1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`Class`对象代表了运行时的类信息,通过`Class.forName()`方法可以获取到类的`Class`对象。此外,`java.lang.reflect...

    Java 第三阶段增强分析需求,代码实现能力【反射】---- 代码

    Java 第三阶段增强分析需求,代码实现能力【反射】---- 代码 Java 第三阶段增强分析需求,代码实现能力【反射】---- 代码 Java 第三阶段增强分析需求,代码实现能力【反射】---- 代码 Java 第三阶段增强分析需求,...

    java(教学0)韩建雷java反射机制-relea.ppt

    java(教学0)韩建雷java反射机制-relea.ppt

    JAVA基础--JAVA中的反射机制详解

    JAVA 反射机制详解 JAVA 反射机制是 Java 语言中的一种动态获取信息和动态调用对象方法的功能。它允许程序在运行时获取类的信息、构造对象、获取成员变量和方法、调用对象的方法等。 Java 反射机制主要提供了以下...

    Java基础知识培训 Java基础教程-Java基础知识全套PPT课件 共9个章节.rar

    Java基础[02-Java基础语法1].pdf Java基础[02-Java基础语法2].pdf Java基础[03-面向对象].pdf Java基础[04-继承上].pdf Java基础[04-继承下].pdf Java基础[05-多线程].pdf Java基础[06-集合].pdf Java基础[07-IO]....

    java基础教程----精华版

    这个"java基础教程----精华版"显然是一份精心整理的资料,旨在帮助初学者快速掌握Java编程的基础知识。下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储...

    JAVA设计模式--程序设计--反射--注解--泛型

    Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...

    mysql-connector-java-5.1.40-bin.jar连接器

    在这个特定的版本——mysql-connector-java-5.1.40-bin.jar中,我们找到了这个连接器的5.1系列的一个稳定版本。 首先,让我们了解JDBC的作用。JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套...

    ckeditor-java-core-3.5.3

    此版本是"ckeditor-java-core-3.5.3",专门针对Java平台进行了优化,允许开发者在Java应用程序中集成CKEditor的功能。 1. **CKEditor简介** CKEditor是一款基于JavaScript的WYSIWYG(所见即所得)文本编辑器,最初...

    mysql驱动包 mysql-connector-java-5.1.13-bin.jar

    mysql驱动包 mysql-connector-java-5.1.13-bin.jar 方便快捷获取。。。

    java图片处理工具类JAR包 java-image-scalingjar

    java图片处理工具类JAR包 java-image-scalingjar

    反射实例-JAVA反射机制.doc

    Java 反射机制详解 Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作。这种能力使得 Java 应用程序更加灵活,能够在运行时发现和修改自身...

    java反射-英文版反射规范

    ### Java反射机制详解 #### 一、概述 Java反射机制是一种强大的编程技术,它允许运行时检查类的信息并操作对象的内部结构。本篇将基于Sun公司的官方文档《Java™ Core Reflection API and Specification》(1997年...

    Java基础实战-Bank项目-项目需求和实现源码

    Java基础实战-Bank项目-项目需求和实现源码Java基础实战-Bank项目-项目需求和实现源码Java基础实战-Bank项目-项目需求和实现源码Java基础实战-Bank项目-项目需求和实现源码Java基础实战-Bank项目-项目需求和实现源码...

    Java实列入门实列

    Java实列入门实列是初学者踏入Java编程世界的重要步骤,这个资料集合提供了一系列的示例,帮助新手理解并掌握Java的基本概念和语法。在这个过程中,我们将会探索以下几个关键知识点: 1. **Java环境配置**:在开始...

    mysql链接数据库jar驱动包(mysql-connector-java-5.0.4-bin.jar)

    用于连接mysql数据库. mysql-connector-java-5.0.4-bin.jar

    eclipse-java-indigo-SR2-win32

    "eclipse-java-indigo-SR2-win32" 版本是针对Windows 32位系统的Eclipse IDE的一个特定构建,它属于Eclipse Indigo Service Release 2(SR2)。Indigo是Eclipse的第3.7版本,发布于2011年,它带来了许多新特性和改进...

    java-reflection-Xiangjie.rar_java 反射

    Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白什么是反射机制。反射机制是指在运行状态中,...

    Java-WebSocket-jar

    Java-WebSocket jar包,封装WebSocket实现。

    java解压rar 包含java-unrar-0.3.jar

    `java-unrar-0.3.jar`是一个库,它允许Java开发者处理RAR文件,无需依赖外部命令行工具,如WinRAR。这个库为Java提供了一个简单易用的API,可以方便地实现RAR文件的解压功能。 `java-unrar-0.3.jar`库是由Andrei ...

Global site tag (gtag.js) - Google Analytics