精华内容
下载资源
问答
  • 动态修改对象注解属性

    千次阅读 2019-11-12 17:40:20
    * 动态修改对象属性上某个注解的属性值,通过getClazz()方法可以得到修改后的class * @param fieldName 对象属性名称 * @param annotationClass 注解class * @param attrName 注解属性名称 * @param attrValue ...

    运用了lombox插件

    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    import lombok.experimental.Accessors;
    
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Proxy;
    import java.util.Map;
    
    /**
     *  
     *  * @projectName
     *  * @title     AnnotationUtil   
     *  * @package  
     *  * @description    注解工具类
     *  * @author IT_CREAT     
     *  * @date  2019 2019/9/14 21:16  
     *  * @version V1.0.0 
     *  
     */
    @Data
    @Accessors(chain = true)
    @ToString
    @NoArgsConstructor
    public class AnnotationUtil<T> {
    
        public Class<T> clazz;
    
        public AnnotationUtil(Class<T> clazz){
            this.clazz = clazz;
        }
    
        /**
         * 动态修改对象属性上某个注解的属性值,通过getClazz()方法可以得到修改后的class
         * @param fieldName 对象属性名称
         * @param annotationClass 注解class
         * @param attrName 注解属性名称
         * @param attrValue 注解属性值
         * @return 本工具类实例
         * @throws Exception 异常
         */
        public AnnotationUtil updateAnnoAttrValue(String fieldName, Class<? extends Annotation> annotationClass,String attrName, Object attrValue) throws Exception {
            Field[] declaredFields = this.clazz.getDeclaredFields();
            if(null != declaredFields && declaredFields.length != 0){
                for (int i=0;i<declaredFields.length;i++){
                    Field declaredField = declaredFields[i];
                    if(fieldName.equals(declaredField.getName())){
                        InvocationHandler invocationHandler = Proxy.getInvocationHandler(declaredField.getAnnotation(annotationClass));
                        Field hField = invocationHandler.getClass().getDeclaredField("memberValues");
                        hField.setAccessible(true);
                        Map memberValues  = (Map)hField.get(invocationHandler);
                        memberValues.put(attrName,attrValue);
                        break;
                    }
                }
            }
            return this;
        }
    
        public static void main(String[] args) {
    
        }
    }

     

    展开全文
  • * 将旧对象属性值与新对象属性值做比较 记录修改属性值名称 * @param oldObject 旧对象 * @param newObject 新对象 * @return 修改对象属性值名称集合 */ public static List<String> ...
    private static Logger logger= LoggerFactory.getLogger(ObjectFieldUtil.class);
    
    	/**
    	 * 将旧对象的属性值与新对象的属性值做比较 记录修改的属性值名称
    	 * @param oldObject 旧对象
    	 * @param newObject 新对象
    	 * @return 修改的对象属性值名称集合
    	 */
    	public static List<String> getChangeList(Object oldObject, Object newObject) {
    		//修改的对象属性值名称集合
    		List<String> changeList=new ArrayList<>();
    		//根据对象获取属性值名称
    		String[] filedNameArray=getFieldName(oldObject);
    		//对比两个对象属性值是否相等
    		for(int j=0 ; j<filedNameArray.length ; j++){     //遍历所有属性
    			String fieldName = filedNameArray[j];    //获取属性的名字
    			//忽略版本对比
    			if("serialVersionUID".equals(fieldName)){
    				continue;
    			}
    			Object valueOld = getFieldValueByName(fieldName,oldObject);//旧对象的值
    			Object valueNew = getFieldValueByName(fieldName,newObject);//新对象的值
    			if(valueOld == valueNew || valueOld.equals(valueNew)){
    				//属性值相同
    			}else{
    				//属性值不同 ,记录属性名称
    				changeList.add(fieldName);
    			}
    		}
    		return changeList;
    	}
    
    
    	/**
    	 * 获取属性名数组
    	 * */
    	private static String[] getFieldName(Object o){
    		Field[] fields=o.getClass().getDeclaredFields();
    		String[] fieldNames=new String[fields.length];
    		for(int i=0;i<fields.length;i++){
    			fieldNames[i]=fields[i].getName();
    		}
    		return fieldNames;
    	}
    
    	/**
    	 * 根据属性名获取属性值
    	 * @param fieldName 属性名称
    	 * @param o 对象
    	 * @return
    	 */
    	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;
    		}
    	}

     

    展开全文
  • 最近开发过程中遇到了获取对象的所有属性以及设置属性值的问题,经过一番研究,最终实现了这个功能 直接上代码 extension NSObject{    /**  获取对象对于的属性值,无对于的属性则...

    最近开发过程中遇到了获取对象的所有属性以及设置属性值的问题,经过一番研究,最终实现了这个功能


    直接上代码


    extension NSObject{

        

        /**

         获取对象对于的属性值,无对于的属性则返回NIL

         

         - parameter property: 要获取值的属性

         

         - returns: 属性的值

         */

        func getValueOfProperty(property:String)->AnyObject?{

            let allPropertys = self.getAllPropertys()

            if(allPropertys.contains(property)){

                return self.valueForKey(property)


            }else{

                return nil

            }

        }

        

        /**

         设置对象属性的值

         

         - parameter property: 属性

         - parameter value:   

         

         - returns: 是否设置成功

         */

        func setValueOfProperty(property:String,value:AnyObject)->Bool{

            let allPropertys = self.getAllPropertys()

            if(allPropertys.contains(property)){

                self.setValue(value, forKey: property)

                return true

                

            }else{

                return false

            }

        }

        

        /**

         获取对象的所有属性名称

         

         - returns: 属性名称数组

         */

        func getAllPropertys()->[String]{

            

            var result = [String]()

            let count = UnsafeMutablePointer<UInt32>.alloc(0)

            let buff = class_copyPropertyList(object_getClass(self), count)

            let countInt = Int(count[0])

            

            for(var i=0;i<countInt;i++){

                let temp = buff[i]

                let tempPro = property_getName(temp)

                let proper = String.init(UTF8String: tempPro)

                result.append(proper!)

                

            }

            

            return result

        }

    }



    如有问题欢迎随时联系我 ———— LC



    展开全文
  • 修改对象属性值 List<LibraryDO> lib = list.stream().map(p -> {p.setId(p.getId() + 1);return p;}).collect(Collectors.toList()) /** * LibraryDO 对象 */ public class LibraryDO implements Serializable { /...
    // 1.排序,带参数类型
    list.sort((String s1, String s2) -> s1.compareTo(s2));
    list.sort(( LibraryDO lib1, LibraryDO lib2) -> lib2.getId().compareTo(lib2.getId()));
    // 使用默认方法排序
    Collections.sort(list, Comparator.comparing(LibraryDO::getId)); //升序
    Collections.reverse(list); // 倒序排列
    //随机打乱顺序
    Collections.shuffle(list);
    //更多排序
    //默认ASC排序)
    List<LibraryDO> collect = users.stream().sorted(Comparator.comparing(LibraryDO::getId)).collect(Collectors.toList());
    //DESC排序)
    List<LibraryDO> collect = users.stream().sorted(Comparator.comparing(LibraryDO::getId).reversed()).collect(Collectors.toList());
    
    // 2.数组去重
    List<String> collect = list.stream().distinct().collect(Collectors.toList());
    // 数组去重转换为字符串
    String joining = list.stream().distinct().collect(Collectors.joining(",")); 
    // 根据对象属性去重
    List<LibraryDO> lib = list.stream().collect(Collectors.collectingAndThen(
    					Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(LibraryDO::getId))), ArrayList<LibraryDO>::new));
    
    // 4.获取对象某一属性返回list
    List<String> collect= list.stream().map(LibraryDO::getId).collect(Collectors.toList());
    // 获取对象某一属性返回数组
    Integer[] array = list.stream().map(LibraryDO::getId).collect(Collectors.toList()).stream().toArray(Integer[]::new);
    // 获取对象某一属性返回数组过滤非空
    Integer[] array = list.stream().map(LibraryDO::getId).filter(x -> x !=null).collect(Collectors.toList()).stream().toArray(Integer[]::new);
    //5.修改对象属性值
    List<LibraryDO> lib = list.stream().map(p -> {p.setId(p.getId() + 1);return p;}).collect(Collectors.toList())
    /**
     * LibraryDO 对象
     */
    public class LibraryDO implements Serializable {
    	//ID
    	private Integer id;
    	//图书馆名称
    	private String libName;
    	//网址
    	private String libUrl;
    }
    
    
    
    

    排序
    https://www.cnblogs.com/woyaobianfei/p/9187127.htm

    展开全文
  • // 熟悉vue,因为有数据绑定,其它属性值并不会丢失。因为使用react没多久,特此将自己的错误记录下 this.setState({ pageNav: { total: 100 } }) 正确方法 let pageNav = this.state.pageNav; page...
  •  在实际开发中,有时需要将某个对象的所有属性值全部输出测试,但是有时对象的属性过多,每个属性挨个输出必然会很麻烦,且会发生输出不全的现象。为此,我们可以使用发射技术完成对象所有属性值的输出。  这里...
  • java 对象之间属性值复制

    万次阅读 2012-07-28 13:12:28
    java对象之间属性值复制在许多开源框架中也有实现,在这里介绍下自己的实现、apache commons-beanutils、Spring三种方式实现。 1 自己实现。采用反射,通过源对象getter 方法获取属性值,并通过目标对象的setter...
  • 修改对象属性的方法

    千次阅读 2019-09-23 23:36:22
    为了修改属性性,使用上一页中介绍的如果对象不具备你打算修改属性,技术为对象添加属性,赋予一个新。则会将其添加到对象上。 方法一: 方法二: 也可以用方括号语法来更新对象的属属性的新在等号的...
  • 2、参数和变量名称一致,可用一个代替(es6新语法特性) 如上图所示,在this.data中设置ceshi这条数据,在方法中,我们定义ceshi变量让其等于that.data.ceshi; 然后对ceshi进行操作,其实就是对that.data.ceshi...
  • js高效修改对象数组里的对象属性

    千次阅读 2019-04-18 10:44:31
    一般修改对象数组的对象属性名,最简便的就是通过遍历对象数组的方法进行修改,但是用这个方法,如果处理的数据量很大,它的执行效率是非常低的。下面介绍一个更高效的方法,即通过正则的方法进行过滤修改。 JSON...
  • 简单的对象属性值对比方法

    千次阅读 2016-02-21 23:16:52
    这段时间,小编忙于修改自己所负责的系统中的一个调用接口,这个接口用来调用另外一个系统的API,对方API中的参数进行了升级,在原有对象属性基础之上,增加了一些新的属性,但是由于对新接口的调用处于测试阶段,...
  • js动态设置对象属性名与属性值

    万次阅读 2018-07-20 13:37:49
    动态给 object 添加属性名: “name1” 与属性值: "value1"。期望得到如下格式对象 object={ "name":value } 操作如下: let name = "name", value = value; object[name] ...
  • JAVA使用变量动态修改注解属性值

    千次阅读 2020-07-17 14:51:14
    JAVA使用变量动态修改注解属性值问题场景反射基础动态修改注解属性值的实现问题场景的修复 问题场景 在使用easyexcel做数据导出时,用到了注解@ExcelProperty标记表头,代码如下: import ...
  • vue替换数组对象的某个属性值

    千次阅读 2019-10-30 16:17:26
    通过$set给某个属性从新赋值,具体参照官网https://cn.vuejs.org/v2/api/#vm-set data:[ {name: 'xxx', status: 0}, {name: 'xxx', status: 1}, {name: 'xxx', status: 0}, {name: 'xxx', status: 1}, ] data....
  • Vue Watch 深度监听对象属性值无效

    千次阅读 2020-08-06 11:21:50
    一、watch 深度监听 ...二、使用 $set 改变对象值 created() { // 直接赋值监听无效 // this.formData.name = "这是修改名称"; // this.formData.title = "这是修改的标题"; // this.$set
  • java检查对象属性修改->新

    千次阅读 2018-12-06 11:50:15
     * 检查对象属性修改  * @param oldBean  * @param newBean  * @return  */  public String contrastObj(Object oldBean, Object newBean) {  String str="";  T pojo1 = (T) oldBean;  T pojo2 = ...
  • 场景: 比如后端返回给一个数组对象,但是名字不是我们想要的,我们可以修改key变成我们想要的数组。 比如把下面的第一个数组中key名称改成第二个数组中key名称 arr: [ { name: '小太阳', year: 18}, { ...
  • 原文:C#获取EF实体对象或自定义属性类的字段名称在年前上班的时候遇到了一个问题是这样描述的:我前台设计一个页面,是标签和文本框,当用户修改了哪个文本框的,将该修改前的修改后的,该对应的字段...
  • js修改数组对象属性

    千次阅读 2020-11-02 15:54:19
    我是在用mui框架的picker选择器时,`发现添加的数组不显示,仔细看才发现好像数组对象有固定的属性名称value和text,如下所示 picker.setData([{value:'zz',text:'智子'}]); 我从后台拿到的数组是这样的 ...
  • [Java] 通过反射,动态修改注解的某个属性值

    万次阅读 多人点赞 2018-04-17 16:46:09
    这个题目我并不是很熟悉,不过根据题目描述和查阅相关 Spring 创建定时任务 的资料,发现这也许涉及到通过Java代码动态修改注解的属性值。今天对此尝试了一番,发现通过反射来动态修改注解的属性值是可以做到的:...
  • 3,修改属性值 1,简单使用 他这个@Builder注解,相比之前的编辑器自动生成的getter setter的优点在哪呢? 看下面的使用例子 package com.lxk.lombok; import com.lxk.model.Bird; import java.util.Date; ...
  • pyplot模块提供了获取/设置对象属性值的接口。功能类似于Python内置函数getattr和setattr。从源码上来看,get()是getp()的别名,两者是等价的。setp()、getp()的底层实现是基于Python内置函数getattr和setattr。 ...
  • js修改数组对象属性(key)名

    万次阅读 2019-03-15 15:46:40
    例如:把如下data1的key名称修改成data2中的key名称 data1: [ { appName: '应用1', capacity: 233456 }, { title: '应用2', key: 124535 }] data2: [ { name: '应用1', value: 233456 }, { name: '应用2', ...
  • JavaScript prototype属性修改对象

    千次阅读 2010-09-02 15:26:00
    JavaScript prototype属性 定义和用法prototype 属性使您有能力向对象添加属性和方法。语法object.prototype.name=value实例在本例中,我们将展示如何使用 prototype 属性来向对象添加属性:输出:20000===========...
  • 本示例中又三个对象嵌套: UserBO:复杂对象,其中一个属性是List&...SubAddressBO:包含目标属性addrId,且是string类型,查找addrId的 任务:UserBO是一个复杂对象,该对象中肯定存在目标属性addrId(String...
  • VUE修改数组或对象值——set

    千次阅读 2019-09-30 22:54:11
    Vue.set( target, propertyName/index, value ) ...第二个参数想要修改对象名称或者对应的下标 {string | number} propertyName/index 第三个参数想要修改成功后的 {any} value Vue.set(app.arr,1,'qq') ...
  • <view v-for="(item,i) in googsList"> <view class="tabGoods"> <view class="uni-form-item uni-column"> <view class="uni-flex uni-row"> <...商品名称{{...
  • 现在介绍如何为一个对象添加、修改或 者删除属性和方法。...供了灵活的机制来修改对象的行为,可以动态添加、修改、删除属性和方法。例如首先使用 类Object来创建一个空对象user: var user=new Objec
  • * 比较结果eg:1、字段名称loginName,旧:liu,新:gu;2、字段名称address,旧:hunan,新:neimenggu * @param oldBean * @param newBean * @return */ public String compareObject(Object oldBean, Object...
  • xml文件: ...要把每个item元素的“isSelf”属性值修改为“y” // 获取XML Document document = XMLUtil.getDocument(xmlPath); Element root = document.getRootElement(); Iterator r

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 436,511
精华内容 174,604
关键字:

修改对象名称的属性值