精华内容
下载资源
问答
  • 修改对象名称的属性值
    千次阅读
    2019-11-12 17:40:20

    运用了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) {
    
        }
    }

     

    更多相关内容
  • java反射修改对象属性值

    千次阅读 2022-04-20 15:47:41
    java反射修改对象属性值
    package com.example.springcloud_mode.fanshe;
    
    import com.example.springcloud_mode.entity.YeChuanJiang;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * @Auther: 叶川江
     * @Date: 2022/4/20 14:38
     * @Description: 反射改变对象值
     */
    public class Fanse2 {
        public static void main(String[] args) throws Exception {
            YeChuanJiang entity = new YeChuanJiang();
            entity.setName("ye");
            entity.setAge(28);
            entity.setId(1);
            System.out.println("修改之前地址值:"+entity.hashCode());
            System.out.println("修改之前对象值:"+entity);
            Field[] fields = entity.getClass().getDeclaredFields();
            for (Field field : fields) {//遍历对象的属性和值 属性和值一一对应
                field.setAccessible(true);//开启对象的属性访问权和修改权
                String name = field.getName();//获取本次遍历对象的属性名称
                String value = field.get(entity).toString();//获取本次遍历对象属性的值
                if ("ye".equals(value) && name.equals("name")){//逻辑是如果属性是name,并且值是"ye",就对本次属性值重新赋值
                    field.set(entity,"yechuanjiang");
                }
                System.out.println("属性名称:"+name+",值:"+value);
            }
            System.out.println("修改之后对象值:"+entity);
            System.out.println("修改之后地址值:"+entity.hashCode());
            //打印结果
            /**
             * 属性名称:id,值:1
             * 属性名称:name,值:ye
             * 属性名称:age,值:28
             * YeChuanJiang(id=1, name=yechuanjiang, age=28)
             */
        }
    }
    
    
    展开全文
  • 修改对象属性值 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

    展开全文
  • Java基础系列:反射修改对象属性

    千次阅读 2020-11-26 23:19:03
    2 修改属性值 2.1 实体类 package com.company.designpattern.reflect; import java.util.Objects; /** * 测试类,用于反射测试 * @author xindaqi * @since 2020-11-26 */ public class User { private ...

    1 应用场景

    利用反射,通过对象(类实例化)属性名称,修改对象(类实例化)属性的值。
    此处感谢:TD_FAlmK。

    2 修改类属性值

    2.1 实体类

    package com.company.designpattern.reflect;
    
    import java.util.Objects;
    
    /**
     * 测试类,用于反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class User {
    
        private String name;
    
        private String address;
    
        private Integer age;
    
        public User() {}
    
        public User(String name, String address, Integer age) {
            this.name = name;
            this.address = address;
            this.age = age;
        }
    
        @Override 
        public boolean equals(Object o) {
            if(this == o) {
                return true;
            }
            if(null == o || getClass() != o.getClass()) {
                return false;
            }
            User that = (User) o;
            return name.equals(that.name) && address.equals(that.address) && age == that.age;
        }
    
        @Override 
        public int hashCode() {
            return Objects.hash(name, address, age);
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
        public String getAddress() {
            return address;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
        public Integer getAge() {
            return age;
        }
    
        @Override 
        public String toString() {
            return "User:{" + "name: " + name
                + "address: " + address
                + "age: " + age
                + "}"; 
        }  
    }
    

    2.1 暴力修改

    package com.company.designpattern.reflect;
    
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * 反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class ReflectTest {
    
        public static void main(String[] args) throws Exception {
            /**
             * 类实例化
             */
            User user = new User("xiaoxiao", "shenzhen", 10);
            /**
             * 反射获类
             */
            Class<?> clazz = user.getClass();
            /**
             * 获取类中所有属性
             */
            Field[] fields = clazz.getFields();
            System.out.println("Methods in Class: " + fields);
            /**
             * 获取某个属性方法
             * 如name属性的方法
             */
            Field field = clazz.getDeclaredField("name");
            /**
             * 开启私有属性编辑权限
             */
            field.setAccessible(true);
            /**
             * 设置属性值
             */
            field.set(user, "dada");
            Class s = field.getType();
            System.out.println("data type: " + s);
            System.out.println("Object name: " + field.getName());
            System.out.println("暴力赋值: " + user.getName());
        }
        
    }
    

    2.2 内省机制修改

    package com.company.designpattern.reflect;
    
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * 反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class ReflectTest {
    
        public static void main(String[] args) throws Exception {
            /**
             * 类实例化
             */
            User user = new User("xiaoxiao", "shenzhen", 10);
            /**
             * 反射获类
             */
            Class<?> clazz = user.getClass();
            /**
            * 内省机制
            */
            PropertyDescriptor propertyDescriptor = new PropertyDescriptor("name", clazz);
            Method setMethod = propertyDescriptor.getWriteMethod();
            setMethod.invoke(user, "erer");
            System.out.println("内省机制: " + user.getName());
        }
    }
    

    3 小结

    3.1 暴力修改

    暴力修改private属性值,需要使用setAccessable(true)方法获取修改权限,否则会出现如下情况:
    Exception in thread “main” java.lang.IllegalAccessException: Class com.company.designpattern.reflect.ReflectTest can not access a member of class com.company.designpattern.reflect.User with modifiers “private”
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
    at java.lang.reflect.Field.set(Field.java:761)
    at com.company.designpattern.reflect.ReflectTest.main(ReflectTest.java:39)

    3.2 内省模式

    通过PropertyDescriptor获取属性类实例,调用getWriteMethod()获取属性的写方法,invoke即可设定属性值。


    【参考文献】
    [1]
    [2]

    展开全文
  • * 将旧对象属性值与新对象属性值做比较 记录修改属性值名称 * @param oldObject 旧对象 * @param newObject 新对象 * @return 修改对象属性值名称集合 */ public static List<String> ...
  • 遍历指定对象所有的属性名称.rar.希望大家喜欢.谢谢
  • 我们总会少不了去用setData去拿数据,让数据驱动视图,我们可以把object、array、number、string、都能setData上去,我们也可以在下面操作它们,但是如果我们碰到更换对象中的其中一个属性值,应该去怎么办?...
  • 假设现在有需求如下:比较2个相同类型的不同对象,找到这2个对象的不同的地方,并展示记录一下。当然说的是相互对应的属性啦。 带着这个需求,看下面的例子。(我写代码的都不嫌弃长,你看代码的就也别嫌弃咯。) ...
  • vue 修改数组中某个对象属性

    千次阅读 2021-12-10 09:16:45
    比如要有如下数组 data() { return { certificateData: [ { name: 'xxx', type: '环境证书', imgs:[{url: 'xxxx.png'] }, { name: 'yyy', type: '安全证书', imgs:[{url: 'yyy.png'}] ...修改对象中 i
  • 通过JSON+正则修改对象属性 JSON.parse(JSON.stringify(list).replace(/title/g, 'name')) 1.JSON.stringify()将json对象转为JSON字符串 2.使用正则的replace(/title/g, 'name'))方法将tilte替换为name 3.JSON....
  • 二:修改游戏对象属性,不要在start中直接写修改 首先创建一个私有属性 private GameObject test; 然后在start中给test进行赋值 var test = GameObject.Find(“GameObject(4)”); 在update中进行操作 test.tra
  • 一、修改坐标轴对象属性、 1、修改坐标轴对象属性、 2、xlim / ylim 函数修改坐标轴属性、 3、修改坐标轴文字大小、 4、修改坐标轴刻度 ( 连续刻度 )、 5、修改坐标轴刻度 ( 指定字符串刻度 )、 二、修改线对象属性...
  • js修改数组对象属性

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

    千次阅读 2022-04-24 11:39:54
    方法一:使用map循环,在map循环内创建一个新对象,将item要改变的key赋给新创建的对象里面新key,然后push给一个新创建的数组dataNew即可; 方法二:使用map循环 + replace替换,通过循环然后将子类JSON....
  • 场景: 比如后端返回给一个数组对象,但是名字不是我们想要的,我们可以修改key变成我们想要的数组。 比如把下面的第一个数组中key名称改成第二个数组中key名称 arr: [ { name: '小太阳', year: 18}, { ...
  • 最近开发过程中遇到了获取对象的所有属性以及设置属性值的问题,经过一番研究,最终实现了这个功能 直接上代码 extension NSObject{    /**  获取对象对于的属性值,无对于的属性则...
  • 起的作用了,final修饰的类是不可变的,给这样的属性引用进行赋新值后,属性引用也会跟着指向新的内存地址,而此时对象中的属性指向的内存地址还是原来的,所以必须通过set来更新对象中的属性值。   唉,看来...
  • 根据属性名获取、设置属性值

    千次阅读 2021-12-28 16:11:51
    1.根据属性名获取属性值 可以通过JDK自带的反射下的getClass下的getDeclaredField并传递一个属性名字来获取该属性 属性名:fileName,对象:Object object; Field field = object.getClass().getDeclaredField...
  • 主要思想还是通过反射获取类的属性的getter方法,调用getter方法获取并比较是否相同,相同就忽略不同就返回属性信息,方法都不复杂,主要是利用反射思想。 代码如下: 定义一个类保存比较后的返回值信息 @Data ...
  • 对象属性名和属性值, 通常是属性值是变动的,但名字是不变的 如: let a = 'abc'; let obj = { name:"xxx" } console.log(obj) //{name: "xxx"} 2、使用变量动态的改变 1.使用 []包裹变量即可 let name = "111"; ...
  • JAVA使用变量动态修改注解属性值

    千次阅读 2020-07-17 14:51:14
    JAVA使用变量动态修改注解属性值问题场景反射基础动态修改注解属性值的实现问题场景的修复 问题场景 在使用easyexcel做数据导出时,用到了注解@ExcelProperty标记表头,代码如下: import ...
  • 2、参数和变量名称一致,可用一个代替(es6新语法特性) 如上图所示,在this.data中设置ceshi这条数据,在方法中,我们定义ceshi变量让其等于that.data.ceshi; 然后对ceshi进行操作,其实就是对that.data.ceshi...
  • 改变数组中对象属性名称

    千次阅读 2020-04-17 15:48:24
    在一定的时间,我们可能需要将数据进行相应的转换,才能进行使用,今天我就需要将一个数组中的对象属性名进行替换,才能进行数据的调用, 1.首先先得到我们将要转换的数组, { day: '2018-12-26 14:31:55' }, ...
  • Jackson序列化 — 修改属性名称

    千次阅读 2020-10-27 20:58:48
    @JsonProperty 可以打在字段上,也可以打在属性上。当在打在字段上的时候,可以省略对应字段的getter方法。 代码示例: import com.fasterxml.jackson.core.JsonProcessingException; import ...
  • js 更改对象中的属性

    千次阅读 2019-07-22 17:30:52
    网上大多是利用JSON转为字符串再进行替换修改属性名 var bbb = JSON.parse(JSON.stringify(aaa).replace(/Name/g,...如果属性值匹配到会被更改 2.属性名中有部分匹配到也会被更改 如下: var aaa = [ { Nam...
  • 修改对象属性的方法

    千次阅读 2019-09-23 23:36:22
    为了修改属性性,使用上一页中介绍的如果对象不具备你打算修改属性,技术为对象添加属性,赋予一个新。则会将其添加到对象上。 方法一: 方法二: 也可以用方括号语法来更新对象的属属性的新在等号的...
  • 一、如何利用反射获取对象 所使用的pojo: public class Person { private String name; private static int age = 58; public Person() { System.out.println("Person的无参构造器"); } public Person...
  •  在实际开发中,有时需要将某个对象的所有属性值全部输出测试,但是有时对象的属性过多,每个属性挨个输出必然会很麻烦,且会发生输出不全的现象。为此,我们可以使用发射技术完成对象所有属性值的输出。  这里...
  • 修改数组中对象的一个属性

    千次阅读 2020-03-10 17:57:49
    之前在使用echart进行接口联调的...修改数组中对象的key changeData = JSON.parse(JSON.stringify(changeData).replace(/navigationName/g, 'name')) //navigationName 修改前的属性名 name要修改属性名 ...
  • arcpy批量修改字段名称属性

    千次阅读 2020-04-11 18:26:23
    arcpy修改字段名称属性 最近在公司遇见mdb数据库文件字段创建错误,需要修改某个图层的某个字段的属性(不可为空) import arcpy from arcpy import env # use your own env.workspace = filePath # 获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494,656
精华内容 197,862
热门标签
关键字:

修改对象名称的属性值