精华内容
下载资源
问答
  • 2019-03-12 12:09:18

    java 对象的属性赋值时,提示NoSuchMethodException,一般来说,对象的get,set方法不会报这样的错误。
    所以,当出现这个问题的时候,需要检查对象生成的时候构建的属性中是否存在该属性。防止class文件长时间没更新,版本太老导致的问题。

    跟踪对象构建过程中的属性情况

    更多相关内容
  • 对象之间的属性赋值主要通过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-02-12 13:37:52
    例如: User 对象中有100个属性,从jsp页面传过来的参数对应了其中的某一个属性,根据User中的set方法为具体的属性赋值。怎么样根据set方法或者其他的方法为对应的不确定的属性赋值!public class User{private ...

    例如: User 对象中有100个属性,从jsp页面传过来的参数对应了其中的某一个属性,根据User中的set方法为具体的属性赋值。

    怎么样根据set方法或者其他的方法为对应的不确定的属性赋值!

    public class User{

    private String field1;

    private String field2;

    private String field3;

    private String field4;

    private String field5;

    private String field6;

    private String field7;

    private String field8;

    private String field9;

    private String field10;

    private String field11;

    private String field12;

    private String field13;

    private String field14;

    private String field15;

    private String field16;

    private String field17;

    private String field18;

    private String field19;

    private String field20;

    ..//get、set方法省略

    }

    String param = request.getParameter(" field ? ");

    其中? 根据json返回的数据自动生成的文本框,获取到的属性名称,对应了User中的具体某个属性。比如:?为1,则获取到field1 的值,然后将其赋值给User。

    如何解决以上,为User多个属性动态赋值。

    展开全文
  • java对象之间赋值

    千次阅读 2020-12-20 10:41:45
    第一种:使用org.apache.commons.beanutils.PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。 特点: 1.它的性能问题相当差 2.PropertyUtils有自动...

    第一种:使用org.apache.commons.beanutils.PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。

    特点:

    1.它的性能问题相当差

    2.PropertyUtils有自动类型转换功能,而java.util.Date恰恰是其不支持的类型

    3.PropertyUtils支持为null的场景;

    public static void copyProperties(Object dest, Object orig) {
    try {
     PropertyUtils.copyProperties(dest, orig);
    } catch (IllegalAccessException | InvocationTargetException
    throw new IllegalArgumentException(e);
    | NoSuchMethodException e) { }
    }
    

    第二种:使用BeanUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。

    特点:

    1.BeanUtils速度相对快一些

    2.BeanUtils没有自动转换功能,遇到参数名相同,类型不同的参数不会进行赋值。

    3.BeanUtils对部分属性不支持null的情况,Ineger、Boolean、Long等不支持。

    public static void copyProperties(Object dest, Object orig) {
    try {
     BeanUtils.copyProperties(dest, orig);
    } catch (IllegalAccessException | InvocationTargetException e) {
    throw new IllegalArgumentException(e);
    }
    }
    

    第三种:将java对象转换为json,然后将JSON转换成Java对象。注意属性名要相同—采取com.fasterxml.jackson.databind.ObjectMapper的方法

    特点:

    1.属性名一致就可以转换

    2.效率及异常还未验证

    private static final ObjectMapper MAPPER = new ObjectMapper();
    String jsonStr = MAPPER.writeValueAsString(obj);
    RabbitMQDataDto detail = MAPPER.readValue(jsonStr , RabbitMQDataDto.class);
    

    第四种:将java对象转换为json,然后将JSON转换成Java对象。注意属性名要相同—采取com.alibaba.fastjson.JSON

    特点:

    1.需要拷贝的两个对象里面都包含有另一个对象,但是另一个对象里面属性相同但是对象名不同;

    采用json来转换只要属性名一致即可

    InsurePersonInfoDto applicantInfo = insureRelevantPersonInfoDto.getApplicantInfo();
    ThirdPartInsurePersonInfo thirdPartApplicantInfo = JSON.parseObject(JSON.toJSONString(applicantInfo), new TypeReference<ThirdPartInsurePersonInfo>() {});
    

    第五种Dozer

    1、Dozer是什么?
    dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样.

    使用方法示例如下:

    // article(PO) -> articleVO
    ArticleVO articleVO = dozerMapper.map(article, ArticleVO.class);
    

    这段示例代码。将从数据库里面查询得到的PO对象article,转换为VO对象articleVO,转换过程将所有同名同类型的数据自动赋值给articleVO的成员变量,当然除了reader(因为PO里面没有reader数组数据)。转换需要写属性之间的映射么?不! 默认是根据属性名称来匹配的.

    2、使用Dozer进行实体类的转换:

    首先引入依赖

     <dependency>
      <groupId>net.sf.dozer</groupId>
      <artifactId>dozer</artifactId>
      <version>5.4.0</version>
     </dependency>
    

    注入一个工具类DozerBeanMapper 到上下文中,

     @Configuration
     public class DozerBeanMapperConfigure {
      @Bean
      public DozerBeanMapper mapper() {
       DozerBeanMapper mapper = new DozerBeanMapper();
       return mapper;
      }
     }
    

    注入然后开始使用

    @Autowired
    protected Mapper dozerMapper;
    

    在实际应用中,我们不只需要PO转VO,有时还需要List转List.写一个工具类,实现List转List

    public class DozerUtils {
    
     static DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
    
     public static <T> List<T> mapList(Collection sourceList, Class<T> destinationClass){
      List destinationList = Lists.newArrayList();
      for (Iterator i$ = sourceList.iterator(); i$.hasNext();){
       Object sourceObject = i$.next();
       Object destinationObject = dozerBeanMapper.map(sourceObject, destinationClass);
       destinationList.add(destinationObject);
      }
      return destinationList;
     }
    }
    

    转自:https://www.jb51.net/article/193804.htm
    Dozer可以参考http://dozer.sourceforge.net/documentation/springintegration.html

    展开全文
  • java对象对象赋值

    千次阅读 2021-03-16 20:02:44
    java对象对象赋值 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行...
  • 今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • packagetest;importsun.rmi.runtime....importjava.lang.reflect.Field;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Locale;/*** Created by Admi...
  • import org.springframework.beans.BeanUtils; BeanUtils.copyProperties(源对象, 目标对象);
  • Java一个类可以包含有:属性(成员变量),构造器, 方法(或者叫函数), 代码块(程序段),内部类。那么结合这些,我们就有了对属性赋值的位置: > 1):默认初始化 > 2):显示初始化 > 3):构造器中赋值 > 4...
  • 1、需要依赖commons-beanutils... //给泛型对象赋值 BeanUtils.setProperty(test, "name", "tests"); System.out.println("fsdf = " + test.getName()); } } 运行main函数输出结果 注意:其中CJjTest可以是泛型对象
  • java反射无所不能,辣么,怎么通过反射设置一个属性的值呢?  主程序: /**  * @author tengqingya  * @create 2017-03-05 15:54  */ public class TestReflectSet {  private String readOnly;  public ...
  • Java父子对象属性赋值问题:现有父类Father类,子类Son类继承于Father类,现要求将父类对象的属性值全部赋予给子类,如果通过子类对象.set(父类对象.get属性),那势必相当麻烦。 那么,有没有更加方便的API呢?...
  • JAVA反射给属性赋值

    2021-02-27 10:55:26
    开始理解起来可能比较费劲,但我们可以通过一个通俗说明来这样理解AOPJAVA反射——给属性赋值使用反射的机制来给私有的属性赋值,这个原理在许多ORM的组件中都有应用,下面是一段掩饰代码pub...
  • 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...
  • 反射给属性赋值
  • java不同对象属性赋值

    千次阅读 2017-08-29 21:18:45
    将JSONObject中的值赋值给类中和key同名的属性
  • java对象赋值的方式

    千次阅读 2021-02-12 09:20:54
    对于private修饰的属性不能直接使用只能间接作用2.setter和getter方法给外部一个set方法通过这个方法间接给对象赋值,可以对外部给的值进行控制给外部一个get方法访问某个变量的值注意:建议将se...
  • 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对象之间相同属性赋值

    千次阅读 2020-10-09 16:17:27
    要把其中一个对象的一些属性赋值给另一个对象。 最原始的方式是依次调用两个对象的set和get方法,挨个赋值。 但是spring提供了BanUtils的方法copyPrpperties可以实现。 注: 博客:...
  • 注意依赖,springframework下的复制顺序为 (目标对象,新对象) import org.springframework.beans.BeanUtils; public static void main(String[] args) { InterfaceCaseDO oldInterfaceCase = new InterfaceCaseDO...
  • java 父类对象属性赋值给子类对象

    千次阅读 2021-05-10 11:40:35
    父类对象属性赋值给子类对象 org.springframework.beans.BeanUtils.copyProperties(父类对象,子类对象);
  • 在遇到需要将一个对象的部分属性赋值(copy)给另外一个对象时,BeanUtils.copyProperties(source,target) 可以非常方便的为我们解决这个问题(注意:BeanUtils是org.springframework.beans包下的)。其中source参数...
  • java 属性赋值顺序

    2020-10-18 22:22:55
    属性赋值顺序 1.1属性赋值的方式 ① 默认初始化 ② 显式初始化 ③ 构造器中初始化 ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值 1.2 各种赋值方式的代码 ① 默认初始化(声明变量时系统默认的值) class Person{ ...
  • 下面小编就为大家带来一篇Java通过反射机制动态设置对象属性值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java中给属性设置值有三种方式: 通过set()方法(对于一个类中的成员变量(属性),如果都被设置成了private私有数据类型,则对外给属性设置... * dog类,用于演示类中属性赋值 * @author Katrina * */ public clas...
  • 主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下
  • MenuPermissionVO menuPermission = new MenuPermissionVO(); Field[] declaredFields = menuPermission.getClass().getDeclaredFields(); for (Field field : declaredFields) { ... // 获取属性的类型 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 334,779
精华内容 133,911
关键字:

java对象属性赋值

java 订阅