-
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 属性赋值的先后顺序:
① - ② - ③ - ④
所以下面代码输出值为30class 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); }
-
Java对象之间的属性赋值
2021-02-12 13:37:52对象之间的属性赋值主要通过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之属性赋值的先后顺序
2021-12-02 09:19:14Java一个类可以包含有:属性(成员变量),构造器, 方法(或者叫函数), 代码块(程序段),内部类。那么结合这些,我们就有了对属性可赋值的位置: > 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 类属性赋值的先后顺序
2022-03-29 17:09:39Java 类属性赋值的先后顺序 1.属性赋值的先后顺序 默认初始化 显式初始化 构造器中赋值 通过对象.方法或对象.属性的方式进行赋值 2.code 举例 public class UserTest { public static void main(String[] args) {... -
Java实现不同的类的属性之间相互赋值
2020-08-26 04:44:46今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
java-使用反射给属性赋值(适用于多对象共用一个处理参数的方法)
2021-11-28 21:09:55反射给属性赋值 -
JAVA反射给属性赋值
2021-02-27 10:55:26开始理解起来可能比较费劲,但我们可以通过一个通俗说明来这样理解AOPJAVA反射——给属性赋值使用反射的机制来给私有的属性赋值,这个原理在许多ORM的组件中都有应用,下面是一段掩饰代码pub... -
Java 使用反射给属性赋值
2022-04-25 18:10:11Java 使用反射给属性赋值 package com.nf147.manage.spring; import java.lang.reflect.Field; public class Cat { private String name; @Override public String toString() { return "Cat{" + "name=... -
java中为实体对象的动态属性赋值
2021-02-27 15:36:26慕勒3428872下面是User类:importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;publicclassUser{privateMapmap=newHashMap();publicbooleancontains(Stringkey){... -
Java 通过反射给实体类赋值操作
2020-08-24 20:17:12主要介绍了Java 通过反射给实体类赋值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Java中给成员变量(属性)赋值三种方式详解
2020-04-21 15:14:32Java中给属性设置值有三种方式: 通过set()方法(对于一个类中的成员变量(属性),如果都被设置成了private私有数据类型,则对外给属性设置... * dog类,用于演示类中属性赋值 * @author Katrina * */ public clas... -
java 利用反射机制,获取实体所有属性和方法,并对属性赋值
2020-08-31 15:08:08主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下 -
java :给Java实体对象或泛型类属性赋值
2021-12-14 09:37:441、需要依赖commons-beanutils... //给泛型对象赋值 BeanUtils.setProperty(test, "name", "tests"); System.out.println("fsdf = " + test.getName()); } } 运行main函数输出结果 注意:其中CJjTest可以是泛型对象。 -
Java中利用工具类对bean实体类所有属性统一赋值
2020-03-17 14:45:42Java中利用工具类对bean实体类所有属性赋值这里做一下简单的说明我在实际开发过程中,调外部系统时,发送报文,报文会通过bean转换成xml的形式发送出去,这时候空的bean转换后的形式不符合要求,就需要给空的bean的... -
java获取对象所有属性并给属性赋值
2021-03-04 04:58:53packagetest;importsun.rmi.runtime....importjava.lang.reflect.Field;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Locale;/*** Created by Admi... -
JAVA反射之私有属性赋值
2019-10-12 09:09:34案例:Map集合若有key(键)与User类中的私有属性相同,就把对应的value值赋值给该私有属性。 User类: public class User { private int id; private String name; private String sex; private String ... -
通过属性名称给属性赋值
2022-05-02 11:39:35通过属性名称给属性赋值 环境: win10 jdk8 idea 情况说明: 公司有个功能需要调用平台接口,返回一个值,后续不同的接口需要用这个值,但是不同接口是通过不同的字段去取这个值。如: 总的调用类为user,A类型接口... -
java反射遍历实体类属性和类型,并赋值和获取值的简单方法
2020-08-30 20:27:38下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
JavaScript 反射和属性赋值实例解析
2021-01-19 20:45:12这篇文章主要介绍了JavaScript 反射和属性赋值实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java和.NET都有着比较完善的反射机制,用来处理未知的... -
java通过反射方式给实体类属性赋值
2021-03-14 01:40:49import http://www.doczj.com/doc/041fffeb172ded630b1cb6dc.htmlng.reflect.InvocationTargetException;import ...import java.sql.Connect... -
Java 基础(构造器,属性赋值先后顺序)
2021-02-12 21:00:47构造器构造器的作用:创建对象初始化对象的属性说明:如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式: 权限修饰符 类名(行参列表){}一个类中定义的多个构造器,彼此构成重载一旦... -
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父子对象属性赋值问题:使用Spring的BeanUtils将父类对象的属性赋值给子类,Java如何将父类对象属性值...
2020-09-18 19:22:23Java父子对象属性赋值问题:现有父类Father类,子类Son类继承于Father类,现要求将父类对象的属性值全部赋予给子类,如果通过子类对象.set(父类对象.get属性),那势必相当麻烦。 那么,有没有更加方便的API呢?... -
java 给两个类的相同属性赋值
2020-12-10 18:59:52* @param class1 用于赋值的实体类 * @param class1 需要待赋值的实体类 * 描述:反射实体类赋值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = ... -
【Java 注解】自定义注解 ( 注解属性定义与赋值 )
2021-05-17 09:38:00一、自定义注解格式、 二、注解本质分析、 三、注解属性及类型、 四、注解属性类型、 五、注解属性赋值简化操作、