精华内容
下载资源
问答
  • Java 动态为类添加属性

    千次阅读 2019-10-11 09:28:37
    “衰兰送客咸阳道,天若有情天亦老” 序 有一个这样的功能:展示一个报表,表头是动态的,可以手动新增或删除,也就是说会修改表结构,...但是这里说说给实体类动态添加属性。 实现代码 import com.google.common...

    “衰兰送客咸阳道,天若有情天亦老”

    有一个这样的功能:展示一个报表,表头是动态的,可以手动新增或删除,也就是说会修改表结构,新增或删除表字段。然而一般实体类都是对应表结构的,那么如何给实体增加属性呢?虽然我自己的解决方案是直接返回List<map>,然后让对应的列适配到map的key中。但是这里说说给实体类动态添加属性。

    实现代码

    
    import com.google.common.collect.Maps;
    import net.sf.cglib.beans.BeanGenerator;
    import net.sf.cglib.beans.BeanMap;
    import org.apache.commons.beanutils.PropertyUtilsBean;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     *@author 
     *@date 2019/10/9
     *@description
     */
    public class ReflectUtil {
    
        static Logger logger = LoggerFactory.getLogger(ReflectUtil.class);
    
        public static Object getTarget(Object dest, Map<String, Object> addProperties) {
            // get property map
            PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
            PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(dest);
            Map<String, Class> propertyMap = Maps.newHashMap();
            for (PropertyDescriptor d : descriptors) {
                if (!"class".equalsIgnoreCase(d.getName())) {
                    propertyMap.put(d.getName(), d.getPropertyType());
                }
            }
            // add extra properties
            for (Map.Entry<String, Object> entry : addProperties.entrySet()) {
                propertyMap.put(entry.getKey(), entry.getValue().getClass());
            }
    //        addProperties.forEach((k, v) -> propertyMap.put(k, v.getClass()));
            // new dynamic bean
            DynamicBean dynamicBean = new DynamicBean(dest.getClass(), propertyMap);
            // add old value
            for (Map.Entry<String, Class> entry : propertyMap.entrySet()) {
                try {
                    // filter extra properties
                    if (!addProperties.containsKey(entry.getKey())) {
                        dynamicBean.setValue(entry.getKey(), propertyUtilsBean.getNestedProperty(dest, entry.getKey()));
                    }
                } catch (Exception e) {
                    logger.error(e.getMessage(), e);
                }
            }
            ;
            // add extra value
            for (Map.Entry<String, Object> entry : addProperties.entrySet()) {
                try {
                    dynamicBean.setValue(entry.getKey(), entry.getValue());
                } catch (Exception e) {
                    logger.error(e.getMessage(), e);
                }
            }
            ;
            Object target = dynamicBean.getTarget();
            return target;
        }
    
        public static class DynamicBean {
            /**
             * 目标对象
             */
            private Object target;
    
            /**
             * 属性集合
             */
            private BeanMap beanMap;
    
            public DynamicBean(Class superclass, Map<String, Class> propertyMap) {
                this.target = generateBean(superclass, propertyMap);
                this.beanMap = BeanMap.create(this.target);
            }
    
    
            /**
             * bean 添加属性和值
             *
             * @param property
             * @param value
             */
            public void setValue(String property, Object value) {
                beanMap.put(property, value);
            }
    
            /**
             * 获取属性值
             *
             * @param property
             * @return
             */
            public Object getValue(String property) {
                return beanMap.get(property);
            }
    
            /**
             * 获取对象
             *
             * @return
             */
            public Object getTarget() {
                return this.target;
            }
    
    
            /**
             * 根据属性生成对象
             *
             * @param superclass
             * @param propertyMap
             * @return
             */
            private Object generateBean(Class superclass, Map<String, Class> propertyMap) {
                BeanGenerator generator = new BeanGenerator();
                if (null != superclass) {
                    generator.setSuperclass(superclass);
                }
                BeanGenerator.addProperties(generator, propertyMap);
                return generator.create();
            }
        }
    
        public static void main(String[] args) {
            TestClass entity = new TestClass();
            entity.setAge(15);
            entity.setId(1);
            entity.setName("张三");
            //动态设置属性字段
            Map<String, Object> addProperties = new HashMap() {{
                put("sex", "男");
                put("telephone", "123456789");
            }};
            //获取实体中给属性的值
            Object target = getTarget(entity, addProperties);
            System.out.println(getFieldValueByName("id", target));
            System.out.println(getFieldValueByName("name", target));
            System.out.println(getFieldValueByName("age", target));
            System.out.println(getFieldValueByName("sex", target));
            System.out.println(getFieldValueByName("telephone", target));
        }
    
        //获取实体中属性的值
        private static Object getFieldValueByName(String fieldName, Object o) {
            try {
                //通过反射获取值
                String firstLetter = fieldName.substring(0, 1).toUpperCase();
                String getter = "get" + firstLetter + fieldName.substring(1);
                Method method = o.getClass().getMethod(getter, new Class[]{});
                Object value = method.invoke(o, new Object[]{});
                return value;
            } catch (Exception e) {
                logger.error(e.getMessage(), e);
                return null;
            }
        }
    
        //测试类
        public static class TestClass{
            //ID
            private int id;
            //名字
            private String name;
            //年龄
            private int age;
    
            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;
            }
        }
    
    }
    
    

    结果:
    在这里插入图片描述
    本文参考至:JAVA“动态”为类添加属性

    展开全文
  • JS动态添加属性

    千次阅读 2019-05-14 09:40:15
    动态添加属性: const item = { editing: true, uid: uid++ } // 动态设置对象 for (let index = 0; index ; index++) { var key = this.columns[index].code; var value = "" item[key] = value; if...
      //  编辑表格内容
        addItem() {
          const item = {
            editing: true,
            uid: uid++
          }
          // 动态设置对象
          for (let index = 0; index < this.columns.length; index++) {
            var key = this.columns[index].code;
            var value = ""
            item[key] = value;
            if (this.columns[index].dataType === 'Enum') {
              item[key + '_displayname'] = '';
            }
          }
          console.log(item)
          //判断当前是搜索框是不是空   空则直接新增
          if (this.tableList.length > 0) {
            //检查是否有正在编辑的条目  如果没有 则新增一条
            if (this.checkSearchItemByIndex()) {
              this.tableList.push(item)
            }
          } else {
            this.tableList.push(item)
          }
        },

    动态添加属性:

          const item = {
            editing: true,
            uid: uid++
          }
          // 动态设置对象
          for (let index = 0; index < this.columns.length; index++) {
            var key = this.columns[index].code;
            var value = ""
            item[key] = value;
            if (this.columns[index].dataType === 'Enum') {
              item[key + '_displayname'] = '';
            }
          }

     

    展开全文
  • 栅格数据添加属性

    千次阅读 2021-04-01 15:24:20
    栅格数据添加属性表 有时候处理后的土地利用类型数据没有属性表,右击图像我们可以查看到属性表是黑色的 但他不是浮点数值,一个值对应一种类型,可采用下面的方法: 1.打开工具箱中的栅格创建属性表工具 Data ...

    栅格数据添加属性表

    有时候处理后的土地利用类型数据没有属性表,右击图像我们可以查看到属性表是黑色的
    但他不是浮点数值,一个值对应一种类型,可采用下面的方法:
    1.打开工具箱中的栅格创建属性表工具 Data Management Tools(数据管理工具)->Raster(栅格)->Raster Properties(栅格属性)中选择Build Raster Attribute Table(创建栅格属性表)在这里插入图片描述
    2.选中栅格数据,即可创建栅格属性表
    在这里插入图片描述
    3.结果如图所示
    在这里插入图片描述
    如果是浮点型数据,可以通过下面的方法来解决:
    1.把栅格转点,”栅格转点“再用”值提取至点“的工具,获得属性表。
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 1、准备对象数组 let cities = [ { id: 1, chineseName: '合肥', englishName: 'Hefei', area: '11445.1 km²', population: '818.9 万'}, ...2、添加属性 let findCity = cities.find(city => city.i

    1、准备对象数组

    let cities = [
        { id: 1, chineseName: '合肥', englishName: 'Hefei', area: '11445.1 km²', population: '818.9 万'},
        { id: 2, chineseName: '南京', englishName: 'Nanjing', area: '6587.02 km²'},
    ];
    

    2、添加属性

    let findCity = cities.find(city => city.id === 2);
    findCity['population'] = '850.0 万';
    console.log(findCity);
    

    3、删除属性

    let findCity = cities.find(city => city.id === 1);
    delete findCity.population;
    console.log(findCity);
    
    展开全文
  • element给row添加属性

    千次阅读 2019-08-19 18:55:13
    给row添加属性 在使用element的table时会遇到一个问题。用:data绑定表格数据之后,我们想要获取每一行的序号,但是data中没有这个字段。所以添加事件之后我们拿不到所需要的数据。 这里提供一种思路,就是使用table...
  • js 循环为对象添加属性及属性值

    千次阅读 2020-10-13 15:14:18
    for(var i=0;i<val.length;i++){ value[`dis${i}`]=val[i] }
  • 1,python动态添加属性(对象属性,类属性) ** 1,python是动态类型语言:可以在运行中改变自身结构,动态添加/删除属性和方法,删除函数 2,也是强类型语言:变量的类型可以在运行之后,任意变量,不需要强制转换...
  • js 向数组对象中添加属性和属性值

    万次阅读 2019-07-13 17:38:20
    records:[{"status":"1"},{"status":"1"}];...循环最佳属性: records.forEach(item => { item.addState = 1; }) 结果:records:[{"status":"1","addState":"1" },{"status":"1","addState":"1" }] ...
  • objective-c 动态添加属性

    千次阅读 2019-03-21 18:30:53
    项目开发中经常会申明变量保存相关相关值,但是对于功能太多的类中申明过多的变量看着就非常的繁琐,尤其是使用动态语言如javaScript 写过功能的都知道,动态语言可以动态的在一个对象上添加新的属性和值,这将是...
  • vue中给对象添加属性

    千次阅读 2019-02-24 18:52:52
    vue中给对象添加属性 当我们从后台获取到对象后,给获取的对象添加一个新属性 使用this.$set(a,b,c)添加新属性 这里有a,b,c三个参数 a:对象 b:属性名 c:属性值 例:Student是一个对象,给Student对象添加一个sex属性...
  • 给java对象动态的添加属性

    万次阅读 热门讨论 2018-09-03 16:53:28
    、不知道大家有没有遇到过这样的需求 ,就java运行的时候 动态给你java对象添加属性,最近在项目终于到了,想到了反射去实现,但是最终也没有搞出来。。。哎。。 有的时候 比如你用的是hibernate或者Spring jdb.....
  • dynamic动态添加属性

    千次阅读 2019-01-25 15:31:16
    List<dynamic> list = conn.Query(srhsql, p).ToList(); //查出数据 List<dynamic> tmp = new List(); foreach (var row in list...定义一个System.Dynamic.ExpandoObject对象,转成IDictionary,就可以添加属性
  • java动态给实体类添加属性

    千次阅读 2020-04-10 11:01:19
    java动态给实体类添加属性 需要的jar包有两个:cglib-3.1.jar 和 google-collections-1.0.jar 如果是maven项目,就不需要cglib-3.1.jar,直接用spring自带的 org.springframework.cglib即可。 1、创建一个实体:...
  • VUE 怎么给对象动态添加属性

    千次阅读 2020-10-19 15:11:59
    代码 <button @click="addObjB"></button> data:{ data:{ a:'' } } methods:{ addObjB(){ this.$set(this.data,'b...追加属性的两种方式 ... //添加一个属性 this.obj=Object.assign({},this.data,{a:1
  • Swift Extension如何添加属性

    千次阅读 2020-09-02 15:20:00
    这个时候我们应该使用关联属性来实现想要的功能 public extension UIView { private struct AssociatedKey { static var clipType: CornerClipType = .None } var clipType: CornerClipType { get { .
  • js往对象数组里添加属性和属性值

    千次阅读 2019-11-07 14:02:05
    // 往对象数组里添加属性和属性值 function arrayObjAdd (arrayObj ) { //往对象数组里面添加img属性,和值 let image = {"image": hello.png}; // 把image属性添加进我们的arrayObj对象里面 arrayObj.push...
  • Vue中数据动态添加属性

    千次阅读 2020-04-05 20:34:29
    vue现有的对象动态的添加属性: 例如有数据 : data(){ return { userInfo:{age:99 } } } 如果在函数或者计算属性中为userInfo添加name属性, 我们可能会 this.userInfo['name'] = "hangzhou"; 这种方式添加...
  • neo4j的关系节点如何添加属性信息

    千次阅读 2020-02-28 15:21:25
    如果可以成功匹配到该关系节点,那么就可以使用一下语句添加属性信息了 然后使用以下类似语句: MATCH p=()-[r:`尾部`]->() SET r={title:"尾部"} RETURN p MATCH p=()-[r:`尾部`]->() SET r={title:"尾部"} ...
  • VUE中对象添加属性

    万次阅读 2018-01-31 16:02:44
    背景:在通过接口获取数据集对象后,根据业务场景需要在数据集对象上增加额外的属性 data中定义的数据集对象mindData格式示例如下 mindData: [ {label:'清醒',value:'清醒'}, {label:'朦胧',value:'朦胧'...
  • typescript 中给对象动态添加属性

    万次阅读 2020-06-12 18:46:58
    一、 interface theObj { title: string; content: string; point: string[]; [x: string]: any; //动态添加属性 } let newObj:theObj={} 二、 let newObj: { [k: string]: any } = {};
  • java动态给对象添加属性并赋值

    千次阅读 2019-12-10 22:57:28
    Maven引用: <!... <groupId>cglib <artifactId>cglib ...java动态给对象添加属性并赋值 扩展: 深入学习java源码之Introspector.getBeanInfo()与Introspector.getPropertyDescriptors()
  • js中为对象添加属性的方法

    千次阅读 2020-06-04 17:28:13
    js中为对象添加属性的方法 1.js中为对象添加属性的方法有以下方法: // 首先命名一个对象 var Handsome = {}; // 然后获取属性名和属性值 var name = “姓名”; var val = “林杨”; var age = “年龄”; var val2 =...
  • ES6对象表达式和添加属性

    万次阅读 2019-03-12 11:10:18
    我们定义了2个变量,books对象的属性刚好和定义的变量名相同,则可以简写。 如果对象属性study是个方法,则可以简写为study(){} let books = { study:function(){ } }; let js = &quot;javascript&quot;, ...
  • iOS中OC给Category添加属性

    万次阅读 2017-03-19 16:41:47
    利用Runtime的关联对象技术给Categroy添加属性
  • 《vue中对象数组动态添加属性

    千次阅读 2019-10-16 17:43:51
    在软件开发中,前端为了实现某些效果,需要给后端返回的数据中动态添加属性,本文中就来具体阐释下如何给对象数组动态添加属性的问题 正文: 需求: 布局如上图所示,基本需求为:每张银行卡有自己的名字、...
  • js 循环向数组里添加属性

    千次阅读 2019-11-19 17:15:35
    目的:将["1","2"]添加到对象的aiCode字段里面 结果数据项:this.algorithmForm.checkbox=[1,2]; this.algorithmForm.info:[{aiCode:"1"},{aiCode:"2"}] for(let i=0;i<this.algorithmForm.checkbox....
  • js给动态添加的元素添加属性

    千次阅读 2019-02-18 09:57:56
    将一段标签动态添加到div中,给这段标签的img标签设置width:100% 一开始设置了添加类名 // 内容 const content = res.data.data.info.content; document.getElementById('content').innerHTML = content; var a ...
  • jQuery给标签添加属性

    千次阅读 2019-05-06 18:45:51
    获取标签 var name = $("#username") 获取id为username的标签 添加属性 name.attr("placeholder","请输入用户名") 使用变量.attr方法来给标签添加属性,第一个参数为属性的key,第二个参数为属性的value ...
  • vue.js 怎么遍历获取到的数组并添加属性 this.loading = true; this.$ajax .get("/newstore/api/serviceitems") .then(result => { this.loading = false; result.data.forEach(el=>{ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,714,169
精华内容 1,085,667
关键字:

添加属性