`
vwpolo
  • 浏览: 193761 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Java反射功能

阅读更多

   最近项目中需要用到JMeter进行性能测试,在测试过程中需要创建一些测试数据,但是在我们项目中的接口参数类型大多数都是些对象类型的,而从JMeter的控制面板是不能直接传入对象类型的参数,只能传入字符类型的参数,然后我们在后台得到参数内容根据实际需要进行提取,我们一般都是通过JMeter提供的CSV Data Set Config读取写入到文件中的测试数据,进行处理后再构造成对象,这样处理起来是相当的麻烦,所以想通过反射技术来设置JavaBean属性,这样可能方便不少。

 

   有段时间没有用到Java反射了,都忘了一些东西,先写个小例子测试一下,

 

public class TestReflect {
   /**
      *   。
    * @author 刘尧兴
    * @param args
     */
   public static void main(String[] args) {
      String[] fields = { "id", "name" };
      String[] values = { "123456", "liuyaoxing" };
      Student student = new Student();
      for(int i=0;i<fields.length;i++) {
         setValue(student, fields[i], values[i]);
      }
      System.out.println("ID: "+student.id+"  "+"Name: "+student.name);
    }

    public static Object setValue(Object obj,String fieldName, String fieldValue) {
       Class clazz = obj.getClass();
       Field field;
       try {
          field = clazz.getDeclaredField(fieldName);
          field.setAccessible(true);
          field.set(obj, fieldValue);
        }catch (Exception e) {
          e.printStackTrace();
        }
        return obj;
    }

    public static class Student {
       private String id;
       public String name;
    
       public String getId() {
          return id;
       }
       public void setId(String id) {
           this.id = id;
       }
    }
}

 

 

 

   这个例子通过反射赋值给指定的字段,而且Id字段的访问类型为私有的,我们可以通过field.setAccessible(true);这段代码跳过访问权限的验证,打印的结果为:

ID: 123456  Name: liuyaoxing

 

分享到:
评论

相关推荐

    Java反射机制总结

    以下是一个简单的Java反射示例,展示了如何使用反射来获取类的信息: ```java import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.for...

    java面试题--反射机制

    具体来说,Java反射机制提供了以下功能: 1. **获取类的信息**:可以在运行时获取类的修饰符、父类、实现接口等信息。 2. **操作成员**:可以动态地创建对象、修改字段值、调用方法等。 3. **动态加载类**:根据...

    Java反射经典实例

    在提供的"Java反射经典实例.htm"文件中,可能会包含具体的代码示例,演示如何使用反射创建对象、访问字段、调用方法等。结合文件中的内容,读者可以更深入理解反射的实际应用。 总结,Java反射机制提供了对运行时类...

    反射实例-JAVA反射机制

    虽然Java反射提供了强大的功能,但在使用时也需要注意其潜在的问题: - **优点**: - **灵活性**:能够动态地加载和操作类。 - **扩展性**:方便扩展程序的功能。 - **可维护性**:降低了程序间的耦合度,提高了...

    java反射机制应用

    Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建对象,调用方法等。这为Java程序带来了极大的灵活性和扩展性...

    java 反射机制例子

    下面通过一个具体的示例来展示如何使用Java反射来获取类的详细信息: ```java import java.lang.reflect.*; public class DumpMethods { public static void main(String args[]) { try { Class c = Class.for...

    Java反射 JavaBean对象自动生成插入,更新,删除,查询sql语句操作.docx

    "Java反射 JavaBean 对象自动...Java反射JavaBean对象自动生成插入、更新、删除、查询sql语句操作是一种功能强大且实用的技术,具有很高的开发价值和应用价值。但是,需要合理使用Java反射机制,避免性能和安全问题。

    JAVA 反射机制应用

    Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是java.lang.Class,它代表了运行时的类信息。通过Class对象,我们...

    java反射.pdf

    ### Java反射机制详解 #### 一、什么是Java反射? Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用...

    java之反射优化(缓存思路)源码

    通过上述方法,我们可以在不牺牲反射功能的前提下,显著提升程序运行效率。在实际开发中,应根据项目的特性和需求选择合适的缓存策略。同时,对于大型项目,还应考虑线程安全问题,确保在并发环境下缓存的正确性。 ...

    Java反射机制的使用和学习方法

    综上所述,Java反射机制提供了强大的动态编程能力,但使用时需权衡其带来的性能损失和潜在的安全风险。通过深入学习和实践,开发者可以更好地掌握这一机制,为解决问题和开发复杂系统提供强有力的支持。

    Java反射机制Demo

    虽然Java反射机制功能强大,但在实际开发中应谨慎使用,因为它可能破坏封装性,降低程序的可读性和可维护性,还可能带来安全性和性能问题。在非必要情况下,避免使用反射机制,优先考虑其他设计模式和编程技巧。 ...

    java反射技术ppt

    Java反射技术是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象以及它们的方法和属性...不过,需要注意的是,虽然反射功能强大,但也可能导致性能下降和安全风险,因此在使用时应谨慎权衡。

    Java 反射-动态代理

    了解了Java反射和动态代理的基本概念后,实践中我们需要谨慎使用,因为它们会带来一定的性能开销,并可能破坏封装性。然而,只要合理运用,它们能极大地提高代码的灵活性和可扩展性,是Java开发中的利器。 在提供的...

    java反射经典实例

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及...

    Java反射案例

    这个案例将深入探讨如何使用Java反射来实现一些实用的功能。 1. **获取类信息**: 反射机制首先从Class对象开始,它是所有Java类的元数据。通过`Class.forName()`方法或`类名.class`可以获取到Class对象。一旦有了...

    Java反射机制源码

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改私有成员,这为实现元编程和框架设计...

    Java反射机制的学习

    要使用Java反射,首先需要获取到`Class`对象,这是反射操作的基础。以下是一些获取`Class`对象的方法: 1. `getClass()`:每个对象都有`getClass()`方法,可以直接获取对象所属的类的`Class`实例。 2. `Class....

Global site tag (gtag.js) - Google Analytics