`

反射获取类的set和get

阅读更多
package com.reflect;

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

public class TestReflect {

	public static void main(String[] args) {
		Class c;
		/* 反射获取类的方法
		 *  try {
			c = Class.forName("com.reflect.Person");
			Field[] f = c.getDeclaredFields();  //获取映射类所有字段属性
			Method[] m = c.getDeclaredMethods();  //获取映射类的所有方法(继承的方法不会显示)
			for (int i = 0;i<m.length;i++) {
				//System.out.println(m[i].getName()+"========="+i);
				System.out.println(m[i]+"========="+i);  //显示映射类的方法信息
			}
			m[4].invoke(c.newInstance(), "aaa"); //调用映射类的方法
		} catch (Exception e) {
			e.printStackTrace();
		} */
		Person p = new Person("张三",16);
		Dog d = new Dog("蓝色","汪汪","旺才");
//		setObject(p);
//		System.out.println(p.getName());
		getObjectInfo(p);
	}
	
	/**
	 * 任何对象都可以设定值
	 */
	public static void setObject(Object obj){ //获取所有反射类set方法
		try {
			Class c = obj.getClass();
			Field[] f = c.getDeclaredFields();
			for(int i = 0;i<f.length;i++) {
				if(f[i].getName().equals("name")) {
					Method m = c.getMethod("setName", f[i].getType());
					m.invoke(obj, "aaa");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 显示任何对象所有属性
	 */
	public static void getObjectInfo(Object obj){ //获取所有反射类的get方法
		try {
			Class c = obj.getClass();
			Field[] f = c.getDeclaredFields();
			for(int i = 0;i<f.length;i++){
				String fieldName = f[i].getName();
				String name = "get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1,fieldName.length()).toLowerCase();
				//System.out.println(name);
				Method m = c.getMethod(name);
				System.out.println(m.invoke(obj, null));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	} 
}
分享到:
评论

相关推荐

    Java通过PropertyDescriptor反射调用set和get方法

    主要为大家详细介绍了Java通过PropertyDescriptor反射调用set和get方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C#反射(Reflection)对类的属性get或set值实现思路

    下面的例子,是Insus练习对一个类别的属性进行set和get值。 首先写一个类,再写一个可读写的属性: 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; /// &lt;...

    C#反射技术的简单操作(读取和设置类的属性)

    要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法。... } } 然后编写反射该类的代码 代码如下: MyClass obj = new MyClass()

    C# 工厂反射源码

    /// 创建对象或从缓存获取 /// &lt;/summary&gt; public static object CreateObject(string AssemblyPath, string ClassNamespace) { object objType = DataCache.GetCache(ClassNamespace);//从缓存读取 if ...

    day021-反射和注解笔记和代码.rar

    Package getPackage() 获取包名 Class类中方法 T newInstance() 根据当前字节码创建对应的对象 Class类中方法 注意: 1. Class类中方法newInstance():创建当前字节码对象(只能调用无参且...

    java框架知识点汇总(反射,XML,设计模式,Redis缓存数据库)

    这样你就可以使用 Constructor 创建新的对象,用 get() 和 set() 方法读取和修改与 Field 对象关联的字段,用invoke() 方法调用与 Method 对象关联的方法。 另外,还可以调用 getFields() getMethods

    通用工具类

    8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中的role的name属性进行排序,method="role.name") 9.JVM参数获取工具 10.Java对象比较、...

    go语言通过反射获取和设置结构体字段值的方法

    本文实例讲述了go语言通过反射获取和设置结构体字段值的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:type MyStruct struct {  N int } n := MyStruct{ 1 } // get immutable := reflect.ValueOf(n) ...

    Java 反射机制 - v1.0.pdf

    Java 反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信 息。反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值。

    Java反射学习笔记

    获取类内部信息2.1 构造函数2.1.1 获取构造函数2.1.2 使用构造函数构造实例2.2 Field 对象2.2.1 获取 Field 对象2.2.2 Field 的 set,get 操作2.3 Method 对象2.2.1 获取 Method 对象2.2.2 Method 的 invoke 操作3....

    浅谈PHP的反射API

    输出结果为:name say __set __get 也可以用class函数,获取对象属性的关联数组的信息 通过class()函数获取类的信息 打印结果: 通过这个反射API,可以做hook实现插件功能,动态代理等。 网上找的动态代理示例

    利用反射获得类的public static/const成员的值实例

    首先,我们定义一个类: class CDynamic { #if true public const string TableName = p_battlerecord; // OK //public static string TableName = p_battlerecord; // OK #else public static string ...

    C++访问类中私有成员变量的方法

    原则上,C++类中私有变量不允许在类之外的其他任何地方访问,一般来说功能完善的类都会提供get,set方法来操作类属性值,还有是是通过友元访问。但是!但如果没有get、set方法都没有提供,也没有定义友元,比如使用...

    C#通过属性名字符串获取、设置对象属性值操作示例

    #通过反射获取对象属性值并设置属性值 0、定义一个类 public class User { public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } 1、通过属性名(字符串)获取...

    221219-001ShopDemo(数据及其表的自动生成)

    /// 【基实体--类】 /// /// 摘要: /// 1、所有的具体实现实体通过继承该抽象实体,以获取相应的的长整型编号值。 /// 2、为所有的具体实现实体的反射/依赖注入实例化操作,提供1个通用的抓手。 /// /// ...

    StackExchange开源.Net ORM框架 Dapper.NET.zip

    Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。   Dapper.Net的示例代码: public class Dog {  public int? Age { get; set; }  public Guid Id { get; set;...

    jdbc基础和参考

    使用类加载器(使用反射的方式) Class.forName(driverName); 2.实例化Driver Driver driver = new oracle.jdbc.driver.OracleDriver(); DriverManager.registerDriver(driver); 3.加虚拟机参数jdbc....

    基于SSH实现的投票管理系统+源代码+文档说明(高分课程设计)

    java代理实现get,set方法动态获取值 编写前端vue页面总体框架,编写后台代码交互 代码编写遇到的问题 问题: Vue使用问题 只有一个根路径 解决方案: 确保下只 - 不懂运行,下载完可以私聊问,可远程教学 该...

Global site tag (gtag.js) - Google Analytics