精华内容
下载资源
问答
  • 对象属性的值由什么确定
    万次阅读
    2022-03-16 15:05:58

    通过反射机制,可以灵活地根据对象的属性名的字符串形式获取对象的属性值。当一个对象有多个属性的时候,只需要对其中的几个特定属性进行某种特殊处理,具体是哪个属性并不能提前确定,每个需要处理的属性的方法也不相同,此时就可以通过配置的方式进行实现。比如针对每个属性,指定一个处理方式。

     类定义,这里以SysUser类为例:

    import com.fasterxml.jackson.annotation.JsonProperty;
    
    public class SysUser 
    {
        // @JsonProperty("roleIdList")
        private Long[] roleIds;
    }
    
    public Long[] getRoleIds()
    {
        return roleIds;
    }
    
    public void setRoleIds(Long[] roleIds)
    {
        this.roleIds = roleIds;
    }

    以下是采用反射方式,根据属性名获取对象的属性值的代码段:

    import com.fasterxml.jackson.annotation.JsonProperty;
    
    public static Object getFieldValueByObject(Object object, String targetFieldName) throws Exception {
    
    		// 获取该对象的Class
    		Class objClass = object.getClass();
    
    		// 初始化返回值
    		Object result = null;
    
    		// 获取所有的属性数组
    		Field[] fields = objClass.getDeclaredFields();
    		for (Field field : fields) {
    			// 属性名称
    			String currentFieldName = "";
    			// 获取属性上面的注解 import com.fasterxml.jackson.annotation.JsonProperty;
    			/**
    			 * 举例: @JsonProperty("roleIds") 
                 * private String roleIds;
    			 */
    
    			try {
    				boolean has_JsonProperty = field.isAnnotationPresent(JsonProperty.class);
    				
    				if (has_JsonProperty) {
    					currentFieldName = field.getAnnotation(JsonProperty.class).value();
    				} else {
    					currentFieldName = field.getName();
    				}
    				
    				if (currentFieldName.equals(targetFieldName)) {
    					field.setAccessible(true);
    					result = field.get(object);
    					
    					return result; // 通过反射拿到该属性在此对象中的值(也可能是个对象)
    				}
    				
    			} catch (SecurityException e) {
    				// 安全性异常
    				e.printStackTrace();
    			} catch (IllegalArgumentException e) {
    				// 非法参数
    				e.printStackTrace();
    			} catch (IllegalAccessException e) {
    				// 无访问权限
    				e.printStackTrace();
    			}			
    		}
    
    		return result;
    	}

    特别说明:

    1. 如果是私有属性,需要设置属性的可访问性,不设置的话,会抛出异常。

    field.setAccessible(true);

    2. 属性名如果定义不规范,可以通过Json属性注解进行重命名,要求在类定义的对应属性上添加注解,添加注解以后,优先根据注解名称获取属性的值。

        @JsonProperty("roleIdList")
        private Long[] roleIds;
    更多相关内容
  • 遍历对象并改变对象某个属性 function ergObj(){ let obj = { name: '张三', age: 18, address: '月球' }; for (let attr in obj){ // 打印对象的所有属性 console.log(attr+": "+obj[attr]); // ...

    遍历对象并改变对象某个属性的值

    function ergObj(){
        let obj = {
          name: '张三',
          age: 18,
          address: '月球'
        };
        for (let attr in obj){
          // 打印对象的所有属性和值
          console.log(attr+": "+obj[attr]);
          // 更改对象的name值
          attr == 'name' ? obj[attr] = '李四' : '';
        }
      }
      ergObj()
    
    展开全文
  • java 获取实体类对象属性值的方法

    千次阅读 2021-02-26 08:56:29
    在java中我们要获得实体类对象属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象属性的时候先把对象new出来,再用变量名.get()的方法得到,如果想给某个属性赋值...

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到,如果想给某个属性赋值则用变量名.set()的方法赋值。

    第一步,生成一个属性类:

    public class Student {

    //编号

    private int id;

    //姓名

    private String name;

    //年龄

    private int age;

    /**

    * 有参构造,可以通过生成一个Student类型的对象的时候直接赋值

    * @param id

    * @param name

    * @param age

    */

    public Student(int id, String name, int age) {

    this.id = id;

    this.name = name;

    this.age = age;

    }

    /**

    * 无参构造

    */

    public Student(){

    }

    public int getId() {

    return id;

    }

    public void setId(int id) {

    this.id = id;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public int getAge() {

    return age;

    }

    public void setAge(int age) {

    this.age = age;

    }

    }

    第二步:在其他类里通过生成一个Student类的对象来调用:

    //通过生成一个对象并用set方法赋值,get得到

    Student student = new Student();

    student.setId(1);

    student.setName("");

    student.setAge(18);

    //通过有参构造来赋值

    Student student1 = new Student(student.getId(),student.getName(),student.getAge());

    这里首先是给变量student赋值,然后又通过set方法拿到student的内部的各个属性值又通过有参构造的方式赋值给了student1。

    总结起来就是这样给实体类对象里的属性赋值或者得到实体类对象里的属性值。希望对大家有所帮助。

    另附一段没有单设属性类直接在一个类中赋值与获取的代码,刚入门的朋友可以看看,自己感觉有点麻烦不如单设属性类方便,大家自我斟酌吧。

    public class TestInstance {

    public class Product{

    public String name;

    public string age;

    public int count;

    public int number;

    }

    public static void main(String[] args) throws NoSuchMethodException,

    SecurityException, IllegalAccessException,

    IllegalArgumentException, InvocationTargetException {

    // TODO Auto-generated method stub

    Product model = new Product("sss", "11", 3, 4);

    Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组

    // 遍历所有属性

    for (int j = 0; j < field.length; j++) {

    String name = field[j].getName();

    name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法

    String type = field[j].getGenericType().toString(); // 获取属性的类型

    if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名

    Method m = model.getClass().getMethod("get" + name);

    String value = (String) m.invoke(model); // 调用getter方法获取属性值

    if (value == null) {

    m = model.getClass().getMethod("set" + name, String.class);

    m.invoke(model, "");

    }else {

    System.out.println(value);

    }

    }

    if (type.equals("class java.lang.Integer")||type.equals("int")) {

    Method m = model.getClass().getMethod("get" + name);

    Integer value = (Integer) m.invoke(model);

    if (value == null) {

    m = model.getClass().getMethod("set" + name, Integer.class);

    m.invoke(model, 0);

    }

    else {

    System.out.println(value);

    }

    }

    if (type.equals("class java.lang.Boolean")||type.equals("boolean")) {

    Method m = model.getClass().getMethod("get" + name);

    Boolean value = (Boolean) m.invoke(model);

    if (value == null) {

    m = model.getClass().getMethod("set" + name, Boolean.class);

    m.invoke(model, false);

    }

    else {

    System.out.println(value);

    }

    }

    if (type.equals("class java.util.Date")) {

    Method m = model.getClass().getMethod("get" + name);

    Date value = (Date) m.invoke(model);

    if (value == null) {

    m = model.getClass().getMethod("set" + name, Date.class);

    m.invoke(model, new Date());

    }

    else {

    System.out.println(value);

    }

    }

    if (type.equals("double")) {

    Method m = model.getClass().getMethod("get" + name);

    double value = (double) m.invoke(model);

    System.out.println(value);

    }

    }

    }

    }

    展开全文
  • 对于属性值是三角模糊数的不确定多属性决策问题,首先研究几组三角模糊数比较可能度公式之间的等价关系,提出三角模糊数比较优势关系理论,并得到一些优良性质关系和结论;然后借鉴离差最大化思想构建一种确定属性权重...
  • * 获取对象属性值 * @param {object} object 取值对象 * @param {string} attributeChain 属性名链路 * @param {*} defaultValue 默认值 * @return {*} 最终取值 */ const get = (object, attributeChain, ...

    获取对象里面任意属性值

    上代码直接使用:

    /**
     * 获取对象属性值
     * @param {object} object 取值对象
     * @param {string} attributeChain 属性名链路
     * @param {*} defaultValue 默认值
     * @return {*} 最终取值
     */
    const get = (object, attributeChain, defaultValue = null) => {
      if (!object || typeof object !== 'object') {
        return null;
      }
      const result = attributeChain
        .replace(/\[/g, '.')
        .replace(/\]/g, '')
        .split('.')
        .filter(item => item)
        .reduce((acc, val) => {
          if (acc && Object.keys(acc).indexOf(val) > -1) {
            acc = acc[val];
            return acc;
          } else {
            return null;
          }
        }, object);
      return result === undefined || result === null ? defaultValue : result;
    };
    // 举例
    const obj = {
      name: 'xiaoming',
      age: 18,
      hobby:{
    	book: ['React', 'Vue入门到精通'],
    	movie:{
    	  movie1:'古惑仔之只手遮天',
    	}
      }
    };
    const getMove1 = get(obj, 'hobby.movie.movie1', ''); // '古惑仔之只手遮天'
    
    展开全文
  • 通过反射机制调用对象的某个方法 -- 将一个对象属性值赋值给另一个对象的属性开发环境创建对象UserOne、UserTwo编写基于反射的工具类测试结果预留占位 模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于...
  • VUE中如何根据一个字符穿或者一个变量,动态获取对象属性值。如scope.row.col04和scope.row.col05应该是根据变量col02和col03的值来判断获取scope.row的哪个属性的 ``` 插件: :data="{ids: scope.row.col...
  • var arr = { 1267: '成都大学附属医院', 1272: '成都军区机关医院', 1206: '成都市第二人民医院', 1256: '成都市第六人民医院', } function findKey(obj, value, compare = (a, b) => a === b) { ...
  • 假设现在有需求如下:比较2个相同类型的不同对象,找到这2个对象的不同的地方,并展示记录一下。当然说的是相互对应的属性啦。 带着这个需求,看下面的例子。(我写代码的都不嫌弃长,你看代码的就也别嫌弃咯。) ...
  • 做批量删除的时候,要确定数组对象中每一项中有没有发布状态的,如果有也就是判断releaseStatus字段有没有为true的,只要有一个为true就给出提示让撤回后再删除,如果没有发布中的直接删除,下面这句可以快速判断,...
  • (1)获取对象的属性,并且判断对象属性是否存在 举例: let test = {name:’22’,age:67,sex:’man’}; 获取age属性值; 简单写法: if(test && test.age ){ console.log(test.age); } 优化写法: let ...
  • 不知道类的属性名,怎么获取对象属性。class Test {id: Numbername: String}不知道id也不知道name。假设Test是jason数据,解析出来可能是如上的,也可能:class Test {id2: Numbername2: String}的情况,如何获取...
  • JS中轻松遍历对象属性的几种方式

    千次阅读 2020-12-31 09:44:15
    为了保证的可读性,本文采用意译...如果对象的键-都不可枚举,那么将返回键组成的数组。这是合理的,因为大多数时候只需要关注对象自身的属性。来看看一个对象拥有自身和继承属性的例子,Object.keys()只返回自...
  • 通过浏览器控制台添加对象集合,可以看出里面有三个对象,现在我想对他们的num属性进行相加应该怎么操作 var names=[{name:"zs",num:12},{name:"ww",num:12},{name:"ls",num:23}] 通过reduce方法进行操作 names....
  • js修改对象数组中其中某一项属性值

    千次阅读 2021-08-25 16:44:40
    // 只把a中b的,替换成f中d的,c不变 var a = [ {b:1,c:5}, {b:2,c:6}, {b:3,c:7}, {b:4,c:8}, ] var f =[ {b:12}, {b:13}, {b:14}, {b:15}, ] a.forEach((item, index) => { item....
  • 因为项目需要用到,于是简单封装了一些常用的操作: ... * 根据属性名获取属性值   * */   private Object getFieldValueByName(String fieldName, Object o) {   try {   Strin
  • 判断对象的每个属性是否都有

    千次阅读 2020-09-24 10:22:21
    let form = { a: '123', b: '' }, function(form){ let flag = true; for(let key in form){ if(!form[key]){ return false } } return flag }
  • // 判断对象中的属性值是否都为null // f.get(object) 获取属性值 public static boolean checkObjAllFieldsIsNull(Object object) { if (null == object) { return true; } try { for (Field f : object....
  • 属性可以是基本对象和函数)。 属性类型 对象属性类型有两种,一种是数据属性,是数据的保存位置;另一种是访问器属性,包含getter和setter函数。 数据属性 数据属性包含一个数据的位置,在这个位置可以...
  • 对于属性值是区间数的不确定多属性决策问题,首先在界定区间数相对相似度的基础上给出两种新的供选决策对象Max型与Min型相对相似度定义,提出区间数相对相似度与比较优势...
  • //创建一个方法,返回value对应的keyfunction findKey (obj,value, compare = (a, b) =&gt; a === b) { return Object.keys(obj).find(k =&gt; compare(obj[k], value))}//新建一个对象var nameMap = {...
  • TS中通过变量存储key值读取对象属性值时报错(TS: 7053) 错误还原 { TTMap[key] } 处报错 let key: number 元素隐式具有 “any” 类型,因为类型为 “number” 的表达式不能用于索引类型 “{ 0: string; 1: ...
  • JS理解对象对象属性

    千次阅读 2020-07-30 16:10:20
    1.创建自定义对象最简单的方式就是创建一个Object实例,然后为它添加属性和方法 **[外链图片转存失败,源站可能有防盗加粗样式]!链机制,建https://(img-uXblog.csdnimg....
  • List获取其中对象单个属性的所有

    千次阅读 2020-07-16 16:51:40
    //获得属性为Sex的所有 List sex= findStuInfo.stream().map(StuDataInExcelEntity::getSex).collect(Collectors.toList());
  • 模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解...然后我们将查到的用户信息,赋值给新创建的对象即可。 赋值这一步是比较繁琐的,我们需要写循环,然后...
  • 获取属性的相关方法 未完成-----待填坑 获取函数的相关方法 未完成-----待填坑 对象与类的区别 未完成-----待填坑 3.比较的相关工具类的书写 package com.etoppaas.insureagent.common.u...
  • JavaScript中的对象属性和方法的集合体。
  • java中为实体对象的动态属性赋值

    千次阅读 2021-02-12 13:37:52
    例如: User 对象中有100个属性,从jsp页面传过来的参数对应了其中的某一个属性,根据User中的set方法为具体的属性赋值。怎么样根据set方法或者其他的方法为对应的不确定属性赋值!public class User{private ...
  • 数据对象属性类型  数据集数据对象组成。一个数据对象代表一个实体。例如,在销售数据库中,对象可以是顾客、商品或销售;在医疗数据库中,对象可以是患者;在大学的数据库中,对象可以是学生、教授和课程。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 807,999
精华内容 323,199
热门标签
关键字:

对象属性的值由什么确定