精华内容
下载资源
问答
  • JAVA反射属性赋值
    2021-02-27 10:55:26

    AOP:Aspect Oriented Programming,意为面向切面/局部的程序设计。它是面向对象的程序设计的一种延伸。 本文试图通过使用Java本身的动态属性,来实现一个具有简单的AOP功能的容器。 开始理解起来可能比较费劲,但我们可以通过一个通俗说明来这样理解AOP

    JAVA反射——给属性赋值使用反射的机制来给私有的属性赋值,这个原理在许多ORM的组件中都有应用,下面是一段掩饰代码public class FieldTest {public static void main(String[] args) throws Exception {Class clazz = Class.forName("com.snowdi.reflection.Student");Object obj = clazz.newInstance();//通过反射创建对象// 调用getDeclaredField("name") 取得name属性对应的Field对象Field f = clazz.getDec最近做项目,需要利用java反射机制,获取实体类自定义注解的说明信息 1.自定义注解 package com.bjhy.platform.criminal.search.core.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.langlaredField("name");// 取消属性的访问权限控制,即使private属性也可以进行访问。f.setAccessible(true);// 调用get()方法取得对应属性值。System.out.println(f.get(obj));

    //相当于obj.getName();// 调用set()方法给对应属性赋值。f.set(obj, "lkl");

    //相当于obj.setName("lkl");// 调用get()方法取得对应属性修改后的值。System.out.println(f.get(obj));}}本文链接:http://www.snowdi.com/1404.html

    更多相关内容
  • Java 使用反射属性赋值 package com.nf147.manage.spring; import java.lang.reflect.Field; public class Cat { private String name; @Override public String toString() { return "Cat{" + "name=...
    Java 使用反射给属性赋值
    
    
    
    package com.nf147.manage.spring;
    
    import java.lang.reflect.Field;
    
    public class Cat {
    
    
        private String name;
    
        @Override
        public String toString() {
            return "Cat{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
        public String setname() {
            return name;
        }
    
    
        public static void main(String[] args) throws Exception {
    
         //第一种方式
            Cat cat = new Cat();
            Field name = cat.getClass().getDeclaredField("name");
            name.setAccessible(true);
            name.set(cat, "波斯猫");
            System.out.println(cat.name);
    
         //第二种方式
            Cat cat1 = Cat.class.newInstance();
            cat1.name = "中华田园猫";
            System.out.println(cat1.name);
    
    
        }
    
    }

    结果如图:

    www.cnblogs.com/nongzihong/p/10120104.html

    展开全文
  • 属性字段中包含”user“的(不区分大小写),全部赋值为”测试“ /** * @param obj: Java对象 * @param fieldName: 属性名称 * @param filedValue: 属性值 */ private static void reflectionUserInfo...

    将属性字段中包含”user“的(不区分大小写),全部赋值为”测试“

       /**
         * @param obj: Java对象
         * @param fieldName:  属性名称
         * @param filedValue: 属性值
         */
        private static void reflectionUserInfo(Object obj,String fieldName, String filedValue) {
            //获取obj的所有属性
            Field[] fields = obj.getClass().getDeclaredFields();
            //打印出所有的属性值
    //        Arrays.stream(fields).forEach(System.out::println);
            //向某个属性中赋值
            Arrays.stream(fields).filter(field1 -> {
                return field1.getName().toLowerCase().contains(fieldName.toLowerCase());
            }).forEach(o->{
                //默认为false 私有属性不能操作
                o.setAccessible(true);
                try {
                    //将属性赋值
                    o.set(obj,filedValue);
                    //获取当前属性的value
    //                String value = (String) o.get(obj);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            });
        }
        
    	//测试
        public static void main(String[] args) {
            T00User user = new T00User();
            System.out.println("赋值前: "+ user);
            reflectionUserInfo(user,"user","测试");
            System.out.println("赋值前: "+ user);
        }
    

    打印的结果

    赋值前: T00User(username=null, password=null, realname=null, createUser=null, updateUser=null)
    赋值前: T00User(username=测试, password=null, realname=null, createUser=测试, updateUser=测试)

    展开全文
  • 反射属性赋值

            整体的三个测试代码块。我的需求是想一个方法可以根据传入对象的不同,进行公共的操作。

            这个例子创建了一个 User 对象,有两个属性,分别是id和name。需要给这两个属性进行赋值操作。

            而操作的方法则是公共的方法,不但是可以为这个对象操作,其他的对象只要有这两个属性也可以实现操作。

            我之前一直不明白这个类型怎么去做控制,因为传入的对象是不同的。其实最核心的点是两个,一个是类类型的控制,第二个是反射赋值。

    第一个类型控制(三种情况):

            1.传入空对象,这个时候可以用 class<T> 去接,进行实例化并返回

            2.传入已经定义好的对象,这个时候可以用他们的公共基类 Obejct 去接。

            3.返回对象(我之前最迷的一点),可以用 <T> T 形式,表示返回的对象是一个泛型。可以方法处理完后再做转换处理。

    第二个反射注入(两种):

            1. 使用大家都耳熟能详的set方法注入,需要拿到方法参数

            2. 拿到字段值直接使用反射工具里的set方法注入。

    见详细的代码:

    
    import lombok.Data;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    /**
     * 反射注入属性值
     * @author wangdefa
     */
    public class SetValue {
    
      //创建一个User对象
      @Data
      static
      class User {
        private String id;
        private String name;
      }
    
      /**
       * 主方法用于调用测试,查看运行结果
       * @param args
       * @throws IllegalAccessException
       * @throws InstantiationException
       * @throws NoSuchMethodException
       * @throws InvocationTargetException
       */
      public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        User user = (User) setVal(User.class);
        System.out.println(user.toString());
        user = setMethodVal(User.class);
        System.out.println(user.toString());
        setMethodValVoid(user);
        System.out.println(user.toString());
    
      }
    
    
      /**
       * 反射注入值-通过属性字段进行赋值
       *
       * @param tClass
       * @return
       * @throws IllegalAccessException
       * @throws InstantiationException
       */
      private static Object setVal(Class<User> tClass) throws IllegalAccessException, InstantiationException {
        Object obj = tClass.newInstance();
        //getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
        //getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
        Field[] fields = obj.getClass().getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
          //成员变量为private,故必须进行此操作
          //以通过反射获取私有变量的值,在访问时会忽略访问修饰符的检查
          fields[i].setAccessible(true);
          if (fields[i].getName().equals("id")) {
            fields[i].set(obj,"1");
          } else if (fields[i].getName().equals("name")){
            fields[i].set(obj,"名字");
          }
        }
        return obj;
      }
    
    
      /**
       * 反射注入值-通过属 set方法进行赋值
       *
       * <T> T 表示返回值是一个泛型
       * T 用于限制传递的数据类型(编译时才需要去确定的具体类型)
       * @param tClass
       * @return
       * @throws IllegalAccessException
       * @throws InstantiationException
       */
      private static <T> T setMethodVal(Class<T> tClass) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        T obj = tClass.newInstance();
        Method setId = obj.getClass().getMethod("setId", String.class);
        setId.invoke(obj, "2");
        Method setName = obj.getClass().getMethod("setName", String.class);
        setName.invoke(obj, "名称");
        return obj;
      }
    
      /**
       * 不同对象使用同一个方法操作相同的字段值(无参)
       * @param obj
       * @throws IllegalAccessException
       * @throws NoSuchMethodException
       * @throws InvocationTargetException
       */
      private static void setMethodValVoid(Object obj) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        Method setId = obj.getClass().getMethod("setId", String.class);
        setId.invoke(obj, "3");
        Method setName = obj.getClass().getMethod("setName", String.class);
        setName.invoke(obj, "3名称");
      }
    }
    

    展开全文
  • JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制...
  • java反射(4)反射赋值

    2021-04-23 17:19:45
    本篇介绍利用反射给对象赋值方法1 获得并使用默认构造器创建类的对象 并对对象赋值这里类用的是Person类 属性有 id ,name ,address 来做例子public class Person {private Integer id;private String name;private ...
  • 主要介绍了Java 通过反射给实体类赋值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用反射读取注解并给属性赋值命名规范问题 登录消息中有很多开关属性,这些属性在赋值的时候会大段执行结构相同的代码,为了减少代码量和通用性使用反射合并这些类似的代码。 1. 原始代码 灰色部分都是在设置开关...
  • 下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 反射给指定字段赋值
  • 主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下
  • 案例:Map集合若有key(键)与User类中的私有属性相同,就把对应的value值赋值给该私有属性。 public class User { private int id; private String name; private String sex; private String address...
  • 代码如下:packagecom.itcast....importjava.io.FileDescriptor;importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;importjava.lang.reflect.Metho...代码如下:package com.itcast.examQues...
  • 这篇文章主要介绍了JavaScript 反射属性赋值实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java和.NET都有着比较完善的反射机制,用来处理未知的...
  • 利用java的reflection机制,动态的给类中的变量赋值。try { Class cls = Class.forName("com.zhjx.bean.User"); Method mtd = cls.getMethod("setUsername", new Class[]{String.class}); Object obj = (Object)cls....
  • 今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • import http://www.doczj.com/doc/041fffeb172ded630b1cb6dc.htmlng.reflect.InvocationTargetException;import ...import java.sql.Connect...
  • java 使用反射动态赋值
  • 那我通过反射来获取每个字段的set方法,然后再反射给null代码如下:publicstaticvoidremoveAllDefaultValue(Objecto)throwsException{Classclazz=o.getClass();Field[]fs=clazz.getDeclaredFields();Met...
  • 今天遇到一个需求,需要在很多...为了避免这种情况发生,引发以后的代码危机,我使用了Java反射+泛型解决了这个问题./*** 使用泛型+反射设置表单流程状态*/public Page getFormStatus(Page page){//遍历List集...
  • 总结一下今天所学,我们在学习java的时候,总会多多少少的听到过反射机制,但是我们好像听过之后就过去了,从来没去了解过它,然后平时做东西,也没有用到过。久而久之就慢慢给淡忘了。有时候面试的时候会被问道,你...
  • java反射无所不能,辣么,怎么通过反射设置一个属性的值呢?  主程序: /**  * @author tengqingya  * @create 2017-03-05 15:54  */ public class TestReflectSet {  private String readOnly;  public ...
  • 可能我们有一个模糊的概念,反射性能会慢,但是有多慢没有一个具体的数据。那我就写代码来测试一下。packagecom.itbac.reflection;importjava.lang.reflect.Field;public classtest {public static void main(String...
  • import lombok.Data;import java.lang.reflect.Field;import java.lang.reflect.Method;@Datapublic class MyFK {String name.../*** 通过反射遍历对象得到对象的值* @param myFK* @throws Exception*/public void t...
  • MenuPermissionVO menuPermission = new MenuPermissionVO(); Field[] declaredFields = menuPermission.getClass().getDeclaredFields(); for (Field field : declaredFields) { ... // 获取属性的类型 ...
  • 关于最简单的反射大家应该都有了解 User user = new User(); Field[] fields = user.getClass().getDeclaredFields();//获得实体类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,854
精华内容 29,141
关键字:

java反射属性赋值

java 订阅