`

通过java反射获得属性值

    博客分类:
  • java
 
阅读更多
packagecom.juziku;
 
publicclassReflectPoint {
    /**
     * 私有变量x
     */
    privateintx;
      
    publicinty;
    publicString str1 = "abc";
    publicString str2 = "123";
      
    publicReflectPoint(intx, inty) {
        super();
        this.x = x;
        this.y = y;
    }
      
}
packagecom.juziku;
 
importjava.lang.reflect.Field;
 
/**
 * 反射例子
 * @author sunlightcs
 * 2011-3-5
 * http://hi.juziku.com/sunlightcs/
 */
publicclassReflectTest {
 
    publicstaticvoidmain(String[] args) throwsException{
          
        ReflectPoint reflectPoint = newReflectPoint(3,5);
          
        /**
         * 通过反射,获得ReflectPoint属性的值
         *
         * reflectPoint.getClass()表示获得ReflectPoint的字节码,
         * 当然也可以写成Field fieldY = ReflectPoint.class
         * 或Class.forName("com.juziku.ReflectPoint");
         * 获得某个类的字节码的方法有3种:
         * ReflectPoint.class   (类名.class)
         * reflectPoint.getClass()   (对象名.getClass())
         * Class.forName("com.juziku.ReflectPoint")   (Class.forName(类名的路径))
         *
         * reflectPoint.getClass().getField("y")表示获得ReflectPoint里y属性的位置
         */
        Field fieldY = reflectPoint.getClass().getField("y");
          
        /**
         * fieldY.get(reflectPoint)表示获得reflectPoint对象里,y位置对应属性的值
         */
        Object y = (Object)fieldY.get(reflectPoint);
          
        /**
         * 打印reflectPoint对象里,属于为y的值
         */
        System.out.println(y);
          
          
          
        /**
         * 获得x属性的值,由于x属于为private类型,
         * 所以要通过getDeclaredField方法查询x所在的位置
         */
        Field fieldX = reflectPoint.getClass().getDeclaredField("x");
          
        /**
         * 由于x属于为private类型,也要设置成可访问,不然获取不到值
         */
        fieldX.setAccessible(true);
        Object x = (Object)fieldX.get(reflectPoint);
        System.out.println(x);
          
          
        /**
         * 获得类型为String的所有值
         */
        getStringValues(reflectPoint);
          
          
        /**
         * 修改str1属性的值
         */
        onchageValue(reflectPoint);
 
    }
 
    privatestaticvoidgetStringValues(Object obj) throwsException{
        /**
         * 获得所有属性的位置
         */
        Field[] fields = obj.getClass().getFields();
          
        for(Field field : fields){
            /**
             * 这里建议用==,不建议用equals
             * 如果field属性是String类型的话,那么跟String的字节码是同一份
             */
            if(field.getType() == String.class){
                String str = (String)field.get(obj);
                System.out.println(str);
            }
        }
    }
 
    privatestaticvoidonchageValue(Object obj) throwsException{
        Field field = obj.getClass().getField("str1");
        System.out.println(field.get(obj));
        field.set(obj, "22");
        System.out.println(field.get(obj));
    }
 
}
分享到:
评论

相关推荐

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

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

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

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

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

    这些代码可能包括创建枚举类,然后通过反射获取枚举值、实例名以及演示如何使用`getDeclaredConstructor()`和`newInstance()`方法来访问私有构造函数(虽然这不是常规用法)。 通过深入理解这些概念,你可以更好地...

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

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

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

    Java反射API提供了一系列类和接口,如`Class`、`Field`、`Method`等,它们让我们能够在运行时动态地获取类的信息,包括类的结构、方法签名以及字段等。这为编程提供了极大的灵活性,尤其是在处理第三方库或者进行元...

    java反射获取一个object属性值代码解析

    java反射获取一个object属性值代码解析是java编程中一个非常重要的知识点,通过反射机制,可以动态地获取一个object的属性值,无需提前知道该对象的类型。下面将详细介绍java反射获取一个object属性值代码解析的相关...

    java反射操作父类所有属性和方法

    通过上述示例,我们了解了如何使用Java反射机制来获取父类的所有属性和方法。这种方法非常灵活,适用于许多不同的场景,如框架开发、测试工具等。需要注意的是,虽然反射功能强大,但在生产环境中应谨慎使用,因为它...

    Java利用反射获取object的属性和值代码示例

    在这篇文章中,我们将通过一个实用的例子来展示如何使用Java反射机制来获取对象的属性和值。 在Java中,反射机制是通过java.lang.reflect包中的类和接口来实现的。其中,Class类是反射机制的核心,通过它可以获取类...

    Java方法反射调用demo

    在Java中,我们可以通过`Class`对象的`getMethod`方法获取到指定的公共方法,然后通过`invoke`方法调用它。例如: ```java Method method = MyClass.class.getMethod("myMethodWithoutArgs"); method.invoke...

    java 反射得到某个方法

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

    通过反射获取注解的属性值(源代码)

    通过反射获取注解的属性值 1、获取类上注解的值 1.1 定义注解类 1.2 定义使用注解的类 1.3 测试类 1.4 测试结果 2、获取属性变量上注解的值 2.1 定义注解类 2.2 定义使用注解的类 2.3 定义测试类 2.4 测试结果 3、...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

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

    例如,你可以通过以下步骤获取类的属性: ```java Class<?> clazz = Class.forName("com.example.YourClass"); Field field = clazz.getDeclaredField("yourFieldName"); ``` 在.NET中,使用`Type`类和`...

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    在给定的标题"Java Bean 遍历和使用注解给Bean的属性添加属性值"中,我们可以深入探讨两个主要主题:Java Bean的遍历和注解的应用。 1. **Java Bean遍历**: - **反射机制**:遍历Java Bean通常涉及使用Java的反射...

    反射获取类属性名和属性值

    利用反射获取实例化类的属性值和属性值!很实用,直接复制到控制台就行了!

    利用反射机制动态获取对象属性名称及数据类型

    此外,`SetValue`方法使我们能够在运行时修改对象的属性值,展示了反射机制的灵活性。在实际开发中,反射机制常用于插件系统、配置管理、序列化和反序列化以及动态代码执行等场景。但需要注意的是,反射的使用会带来...

    JAVA反射机制详解视频

    (类的加载概述和加载时机) (类加载器的概述和分类) (获取class文件对象的三种方式) ...(通过反射写一个通用的设置某个对象的某个属性为指定的值) (通过用户的增删改查和学生的登录注册引出中介) (动态代理的概述和实现)

    Java反射动态修改注解的某个属性值.Java

    本文将深入探讨如何通过Java反射来动态修改注解的某个属性值。 首先,了解注解的基本结构。注解是由`@`符号开始,后面跟着注解的名称和一组键值对组成的。例如,自定义注解`@MyAnnotation(name="test")`,其中`name...

    用反射的方式获取父类中的所有属性和方法

    一旦我们有了`Method`或`Field`对象,就可以在运行时动态地调用方法或设置/获取属性值: ```java Object obj = ...; // 父类实例 method.invoke(obj, parameters); // 调用方法,parameters是参数数组 field....

    Java反射通过Getter方法获取对象VO的属性值过程解析

    Java反射通过Getter方法获取对象VO的属性值过程解析 Java反射是Java语言中一种强大的技术,可以在运行时动态地inspect和modify对象的行为。通过Java反射,可以获取对象的属性值,方法,构造函数等信息。在本文中,...

Global site tag (gtag.js) - Google Analytics