`
wx1569110409
  • 浏览: 18663 次
文章分类
社区版块
存档分类
最新评论

JAVA反射获取私有值和调用私有方法

 
阅读更多

首先定义一个JAVA实体

package serializable;

import java.io.Serializable;

/** 
* @author fyj: 
* @version 创建时间:2018年1月9日 上午11:03:51 
* 类说明 
*/
public class Entity implements Serializable{
	
	private static final long serialVersionUID = 1L;

	private String name;
	
	private String comment;
	
	public Entity(){
		this.name="test";
		this.comment="comment";
	}
	
	public String getName() {
		return name;
	}
	
	@SuppressWarnings("unused")
	private void setName(String name) {
		this.name = name;
	}
	public String getComment() {
		return comment;
	}
	public void setComment(String comment) {
		this.comment = comment;
	}
	
	

}

接下来是获取私有值name并修改,获取私有方法setName,并调用(展示实体内容用了fastjson)

package serializable;

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

import com.alibaba.fastjson.JSON;

/** 
* @author fyj: 
* @version 创建时间:2018年1月9日 下午2:30:32 
* 类说明 
*/
public class Clazz {

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static void main(String[] args) {
		Entity entity = new Entity();
		System.out.println(JSON.toJSON(entity));
		Class clazz = entity.getClass();
		Field f;
        try {
            f =clazz.getDeclaredField("name");
            f.setAccessible(true); 
            f.set(entity, "test1");
            System.out.println(JSON.toJSON(entity));
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        Method method;
        try {
			method = clazz.getDeclaredMethod("setName",String.class);
			method.setAccessible(true);
			method.invoke(entity,"test2");
			System.out.println(JSON.toJSON(entity));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

运行结果

{"name":"test","comment":"comment"}
{"name":"test1","comment":"comment"}
{"name":"test2","comment":"comment"}

 

转载于:https://my.oschina.net/u/2349928/blog/1604681

分享到:
评论

相关推荐

    java 反射 调用私有方法(有参数私有方法)获取私有属性值

    以下是如何使用Java反射来调用私有方法并获取私有属性值的详细步骤: 1. **获取Class对象**:首先,我们需要获取到目标类的Class对象,这可以通过`Class.forName()`方法或者对象的`getClass()`方法来实现。例如,...

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/...

    java 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class

    提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实...

    Java反射访问私有变量和私有方法.doc

    Java 反射是一种强大的工具,使我们可以在运行时查询以及访问变量和方法。我们可以使用反射机制访问类的非公有成员变量或方法。 优点:这种方法可以在运行时访问非公有成员变量或方法,非常灵活。 缺点:这种方法...

    Java 反射详解(包含私有方法属性的调用)

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java程序具有了高度的灵活性和动态性,尤其在框架开发、插件系统...

    java反射机制,调用私有方法

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

    Java反射调用方法

    Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于获取类的方法、字段、构造器等,并能动态调用方法和修改字段值。这个特性使得Java具有了更...

    java 反射得到某个方法

    在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...

    java反射,获取所有属性、方法以及List集合类

    在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类信息等。本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解...

    Java反射机制,通过对象访问调用类的私有成员或方法

    要调用私有方法,我们需要使用`Method`类,先获取到该方法的`Method`对象,然后通过`setAccessible(true)`将其访问权限设为可访问,最后通过`invoke()`方法调用: ```java Method privateMethod = personClass....

    java 反射取得类的私有属性,通过私有属性取得属性值

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和方法,即使这些属性或方法是私有的。这篇博客文章可能讨论了如何利用反射机制来获取类的私有属性并读取其对应...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...

    java反射获取所有属性,获取所有get方法,包括子类父类

    总结,Java反射机制为我们提供了强大的动态性,能够方便地获取和操作类的属性和方法,包括私有成员和子类父类中的成员。通过熟练掌握反射技术,开发者可以实现更灵活、更动态的代码,但也需要谨慎使用,以避免潜在的...

    Java反射方法调用

    Java反射机制是Java语言提供的一种强大的工具,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性在处理不确定类型的对象或者实现动态代理等场景中非常有用。...

    反射修改私有成员变量例子

    在本例中,我们将使用 Java 反射机制来修改私有成员变量的值。 什么是 Java 反射机制? Java 反射机制是 Java 语言中一个内置的机制,它允许程序在运行时检查和修改类的结构和行为。反射机制提供了一种方式来在...

    Java反射获取私有构造函数、属性、方法

    Java 反射机制是 Java 语言中最强大和最灵活的机制之一,它允许开发者在运行时动态地获取和操作类的成员变量和方法。其中,获取私有构造函数、属性、方法是 Java 反射机制的重要应用之一。 在 Java 中,默认情况下...

    java 反射入门-属性方法调用实例

    这篇博文将带你入门Java反射,并通过属性和方法的调用来实践这一概念。 首先,理解反射的基础概念。在Java中,`Class`类代表了运行时的类信息。通过`Class`对象,我们可以获取到类的名称、构造器、方法和字段。例如...

    反射获取属性调用方法反射获取属性调用方法

    在Java或.NET编程环境中,反射是一种强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。反射获取属性和调用方法是其核心功能,广泛应用于框架设计、动态代理、插件机制等领域。下面将详细解释这...

Global site tag (gtag.js) - Google Analytics