精华内容
下载资源
问答
  • Java使用反射向属性赋值
    2021-12-31 15:33:25

    将属性字段中包含”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=测试)

    更多相关内容
  • java 属性赋值顺序

    2020-10-18 22:22:55
    属性赋值顺序 1.1属性赋值的方式 ① 默认初始化 ② 显式初始化 ③ 构造器中初始化 ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值 1.2 各种赋值方式的代码 ① 默认初始化(声明变量时系统默认的值) class Person{ ...

    属性赋值顺序

    1.1属性赋值的方式

    ① 默认初始化
    ② 显式初始化
    ③ 构造器中初始化
    ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值

    1.2 各种赋值方式的代码

    ① 默认初始化(声明变量时系统默认的值)

    class Person{
    	int age; //系统默认把age赋值为0
    }
    

    ② 显式初始化

    class Person{
       int age = 10; //显示初始化把age赋值为10
    }
    

    ③ 构造器中初始化

     class Person{
    	int age = 10; //显示初始化把age赋值为10
    	
    	public Person(int age){//构造器通过形参赋值
    		this.name = name
    	}
    }
    class PersonTest{
    	Person person = new Person(20);//构造器初始化
    }
    

    ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值

     class Person{
    	int age = 10; //显示初始化把age赋值为10
    	
    	public Person(int age){//构造器通过形参赋值
    		this.name = name
    	}
    }
    class PersonTest{
    	Person person = new Person(20);//构造器初始化
    
    	person.age = 30; //"对象.属性"赋值
    }
    

    1.3 属性赋值的先后顺序:

    ① - ② - ③ - ④
    所以下面代码输出值为30

     class Person{
    	int age = 10; //显示初始化把age赋值为10
    	
    	public Person(int age){//构造器通过形参赋值
    		this.name = name
    	}
    }
    class PersonTest{
    	Person person = new Person(20);//构造器初始化
    
    	person.age = 30; //"对象.属性"赋值
    	System.out.println("人的年龄为:"+ person,age);
    }
    
    展开全文
  • 对象之间的属性赋值主要通过org.springframework.beans.BeanUtils.copyProperties方法进行对象之间的属性赋值。赋值前提 -- 两个对象要赋值的属性名需要保持一致对象赋值# 将source对象赋值给target对象BeanUtils....

    对象之间的属性赋值

    主要通过org.springframework.beans.BeanUtils.copyProperties方法进行对象之间的属性赋值。

    赋值前提 -- 两个对象要赋值的属性名需要保持一致

    对象赋值

    # 将source对象赋值给target对象

    BeanUtils.copyProperties(source, target);

    List之间的对象赋值

    /**

    * @param input 输入集合

    * @param clazz 输出集合类型

    * @param 输入集合类型

    * @param 输出集合类型

    * @return 返回集合

    */

    public static List convertListToList(List input, Class clazz) {

    List output = Lists.newArrayList();

    if (CollectionUtils.isNotEmpty(input)) {

    for (E source : input) {

    T target = BeanUtils.instantiate(clazz);

    BeanUtils.copyProperties(source, target);

    output.add(target);

    }

    }

    return output;

    }

    示例

    有以下三个类,User、Cust、Student:

    @Data

    public class User {

    private String name;

    private String password;

    private String email;

    }

    @Data

    public class Cust {

    private String name;

    private String password;

    private String email;

    private String phone;

    }

    @Data

    public class Student {

    private String name;

    private String password;

    }

    工具类:

    import com.google.common.collect.Lists;

    import org.apache.commons.collections.CollectionUtils;

    import org.springframework.beans.BeanUtils;

    import java.util.List;

    /**

    * @Description: 对象之间进行赋值

    * @Date: 2020/9/25 9:55

    */

    public class AssignmentObject {

    /**

    * 对象属性拷贝

    * 将源对象的属性拷贝到目标对象

    * @param source 源对象

    * @param target 目标对象

    */

    public static void copyProperties(Object source, Object target) {

    BeanUtils.copyProperties(source, target);

    }

    /**

    * @param input 输入集合

    * @param clazz 输出集合类型

    * @param 输入集合类型

    * @param 输出集合类型

    * @return 返回集合

    */

    public static List convertListToList(List input, Class clazz) {

    List output = Lists.newArrayList();

    if (CollectionUtils.isNotEmpty(input)) {

    for (E source : input) {

    T target = BeanUtils.instantiate(clazz);

    BeanUtils.copyProperties(source, target);

    output.add(target);

    }

    }

    return output;

    }

    }

    测试类:分别测试对象之间的属性赋值与List之间的属性赋值

    public class Demo {

    public static void main(String[] args) {

    User user = new User();

    user.setName("admin");

    user.setPassword("admin");

    user.setEmail("123@qq.com");

    System.out.println("user:" + user);

    // 将user的属性分别赋给cust和student

    Cust cust = new Cust();

    AssignmentObject.copyProperties(user, cust);

    System.out.println("cust:" + cust);

    Student student = new Student();

    AssignmentObject.copyProperties(user, student);

    System.out.println("student:" + student);

    User user1 = new User();

    user1.setName("demo");

    user1.setPassword("demo");

    user1.setEmail("demo@qq.com");

    System.out.println("user1:" + user);

    // 将users赋值给List和List

    List users = new ArrayList<>();

    users.add(user);

    users.add(user1);

    System.out.println("users:" + users);

    List custs = AssignmentObject.convertListToList(users, Cust.class);

    System.out.println("custs:" + custs);

    List students = AssignmentObject.convertListToList(users, Student.class);

    System.out.println("students:" + students);

    }

    }

    展开全文
  • Java一个类可以包含有:属性(成员变量),构造器, 方法(或者叫函数), 代码块(程序段),内部类。那么结合这些,我们就有了对属性赋值的位置: > 1):默认初始化 > 2):显示初始化 > 3):构造器中赋值 > 4...

    首先,什么是属性?
    属性也叫作成员变量,是类的组成部分之一。
    我们都知道Java一个类可以包含有:

    属性,或者成员变量
    构造器
    方法,或者叫函数
    代码块,或者叫程序段
    内部类

    那么结合这些,我们就有了对属性可赋值的位置:

    1):默认初始化
    2):显示初始化
    3):构造器中赋值
    4):代码块中赋值
    5):有了对象之后,通过“对象.属性“或者“对象.方法”赋值

    那么这几种方法的先后顺序如何呢,下面用代码演示:
    首先对比默认初始化

    package day_12_02;
    
    /**
     * @author soberw
     */
    public class Student {
        //默认初始化
        int id;
        //显示初始化
        int age = 18;
        String name = "张三";
    
    
        //构造器重新赋值
        public Student() {
            name = "李四";
        }
    
        //代码块中赋值
        {
            name = "王五";
        }
    
        //提供set方法
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    class StudentTest {
        public static void main(String[] args) {
            Student student = new Student();
            System.out.println("id:" + student.id);
            System.out.println("age:" + student.age);
            System.out.println("name:" + student.name);
            //通过set方法对age属性重新赋值
            student.setAge(20);
            System.out.println("age:" + student.age);
            //通过对象.属法对name属性重新赋值
            student.name = "马六";
            System.out.println("name:" + student.name);
        }
    
    
    }
    
    

    运行结果:
    在这里插入图片描述

    不难发现,在显式的赋值后,其默认值就不再显示了,所以① < ②
    然后,我们发现获取name属性后,显示的是“李四”,而“李四”是我们在构造器中显示的,“张三”和“王五”都没显示,说明① < ② < ③
    但是当我们通过通过“对象.属性“或者“对象.方法”赋值后,原来的值都发生了变化,因此我们得到① < ② < ③ < ⑤

    那么还有一个问题就是,代码块中赋值和显式初始化哪个先执行呢?
    下面我们进一步测试:

    package day_12_02;
    
    /**
     * @author soberw
     */
    public class Person {
        //声明一个属性
        int id = 0;
        //代码块中赋值
        {
            id = 1;
        }
    }
    class PersonTest{
        public static void main(String[] args) {
            Person p = new Person();
            System.out.println(p.id);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    发现是“1”,也就是代码块先执行,可是真的是这样吗?
    再看,我把声明属性放在下面:

    package day_12_02;
    
    /**
     * @author soberw
     */
    public class Person {
    
        //代码块中赋值
        {
            id = 1;
        }
        //声明一个属性
        int id = 0;
    }
    class PersonTest{
        public static void main(String[] args) {
            Person p = new Person();
            System.out.println(p.id);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    发现又变成“0”了,这是怎么回事呢,其实不难发现,他们的执行顺序是和他们的先后顺序有关的,即谁在前就先执行谁。因此我们最终得出结论:

    ① < ② / ④ < ③ < ⑤

    展开全文
  • Java属性赋值的先后顺序 1.属性赋值的先后顺序 默认初始化 显式初始化 构造器中赋值 通过对象.方法或对象.属性的方式进行赋值 2.code 举例 public class UserTest { public static void main(String[] args) {...
  • 今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 反射给属性赋值
  • JAVA反射给属性赋值

    2021-02-27 10:55:26
    开始理解起来可能比较费劲,但我们可以通过一个通俗说明来这样理解AOPJAVA反射——给属性赋值使用反射的机制来给私有的属性赋值,这个原理在许多ORM的组件中都有应用,下面是一段掩饰代码pub...
  • Java 使用反射给属性赋值 package com.nf147.manage.spring; import java.lang.reflect.Field; public class Cat { private String name; @Override public String toString() { return "Cat{" + "name=...
  • 慕勒3428872下面是User类:importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;publicclassUser{privateMapmap=newHashMap();publicbooleancontains(Stringkey){...
  • 主要介绍了Java 通过反射给实体类赋值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java中给属性设置值有三种方式: 通过set()方法(对于一个类中的成员变量(属性),如果都被设置成了private私有数据类型,则对外给属性设置... * dog类,用于演示类中属性赋值 * @author Katrina * */ public clas...
  • 主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下
  • 1、需要依赖commons-beanutils... //给泛型对象赋值 BeanUtils.setProperty(test, "name", "tests"); System.out.println("fsdf = " + test.getName()); } } 运行main函数输出结果 注意:其中CJjTest可以是泛型对象。
  • Java中利用工具类对bean实体类所有属性赋值这里做一下简单的说明我在实际开发过程中,调外部系统时,发送报文,报文会通过bean转换成xml的形式发送出去,这时候空的bean转换后的形式不符合要求,就需要给空的bean的...
  • packagetest;importsun.rmi.runtime....importjava.lang.reflect.Field;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Locale;/*** Created by Admi...
  • 案例:Map集合若有key(键)与User类中的私有属性相同,就把对应的value值赋值给该私有属性。 User类: public class User { private int id; private String name; private String sex; private String ...
  • 通过属性名称给属性赋值 环境: win10 jdk8 idea 情况说明: 公司有个功能需要调用平台接口,返回一个值,后续不同的接口需要用这个值,但是不同接口是通过不同的字段去取这个值。如: 总的调用类为user,A类型接口...
  • 下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 这篇文章主要介绍了JavaScript 反射和属性赋值实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java和.NET都有着比较完善的反射机制,用来处理未知的...
  • import http://www.doczj.com/doc/041fffeb172ded630b1cb6dc.htmlng.reflect.InvocationTargetException;import ...import java.sql.Connect...
  • 构造器构造器的作用:创建对象初始化对象的属性说明:如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式: 权限修饰符 类名(行参列表){}一个类中定义的多个构造器,彼此构成重载一旦...
  • java实现 json属性赋值 实体属性

    千次阅读 2019-12-23 19:40:34
    是将 userId 赋值给 @JsonProperty(“id”) ,最后返回的是个map结构的数据 @Data @ApiModel("用户信息") public class UserInfo { @JsonProperty("id") private int userId; @JsonProperty("name") private ...
  • Java父子对象属性赋值问题:现有父类Father类,子类Son类继承于Father类,现要求将父类对象的属性值全部赋予给子类,如果通过子类对象.set(父类对象.get属性),那势必相当麻烦。 那么,有没有更加方便的API呢?...
  • * @param class1 用于赋值的实体类 * @param class1 需要待赋值的实体类 * 描述:反射实体类赋值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = ...
  • 一、自定义注解格式、 二、注解本质分析、 三、注解属性及类型、 四、注解属性类型、 五、注解属性赋值简化操作、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 379,880
精华内容 151,952
关键字:

java 属性赋值

java 订阅