美文网首页
函数式编程实现动态调用模型类的set和get方法

函数式编程实现动态调用模型类的set和get方法

作者: 东西汉 | 来源:发表于2020-11-10 14:50 被阅读0次
痛点说明

Java模型类的使用大大提升了代码的阅读性,在抽出公共操作方法时,虽然可以用泛型解决了模型入参的问题,但是如何动态调用set/get方法却成了难点。
目前网上资料绝大多数实现动态调用类的get/set都是通过类的反射来实现的,其实完全可以通过方法引用+函数式编程来实现,简洁易懂。

代码示例
    public static void main(String[] args) {
        Fruit apple = new Fruit("苹果");
        // 苹果加工成水果沙拉
        Fruit fruitSalad = madeFruitSalad(apple, Fruit::getName, Fruit::setName, Fruit::new);
        System.out.println("打印fruitSalad-----------" + fruitSalad + "---------");
    }

    private static <T> T madeFruitSalad(T apple, Function<T, String> getName,
        BiConsumer<T, String> setName, Supplier<T> supplier) {
        // 调用get方法
        System.out.println("调用get方法--------------" + getName.apply(apple) + "--------");
        // 实例化一个空模型
        T model = supplier.get();
        // 调用set方法
        setName.accept(model, getName.apply(apple) + "沙拉");
        return model;
    }
控制台输出
控制台输出
实现概要
  1. 函数式编程中的Function+实例对象实现了动态调用get方法
  2. BiConsumer+实例对象实现了动态调用set方法
  3. Supplier实现了动态生成实例对象
参考链接

通过Java的反射动态调用类的set和get方法
java8的新特性-方法引用
Java8-函数式编程

相关文章

  • 函数式编程实现动态调用模型类的set和get方法

    痛点说明 Java模型类的使用大大提升了代码的阅读性,在抽出公共操作方法时,虽然可以用泛型解决了模型入参的问题,但...

  • Groovy:方法和运算符重载

    方法调用 定义的类的变量会自动生成get和set方法 赋值和取值会自动调用set和get方法 在构造函数中可以给对...

  • 2021-09-28 计算属性

    get set 干干净净 函数式编程 拓展 get set indexOfTheOneAndOnlyFaceUpC...

  • 策略模式

    类方式实现策略模式 根据不同情况动态选择不同的实例方法 命名元祖实现策略模式 attrgetter有利于函数式编程...

  • 响应式编程思想__重写KVO方法

    响应式编程思想 KVO本质是监听一个对象有没有调用set方法重写这个方法KVO底层实现 自定义观察类的子类(NSK...

  • NPE相关——Null Point Exception

    18.7.231、自动拆箱有可能产生NPE。类的Integer属性没有set值,直接在其他函数调用get方法,返回...

  • PHP基础 -- 魔术方法

    __construct() 每次实例化一个类都会先调用该方法进行初始化 __get + __set 实现未定义属性...

  • 如何使用描述符对实例属性做类型检查

    分别实现__get__,__set__,__delete__方法,在__set__内使用isinstance函数做...

  • iOS-链式编程

    函数式编程------->链式编程 函数式编程: 调用方式 我们最终目的是将函数式编程转换为链式编程:首先将调用方...

  • js 继承

    构造函数继承 类式继承是在函数对象内调用父类的构造函数,使得自身获得父类的方法和属性。call和apply方法为类...

网友评论

      本文标题:函数式编程实现动态调用模型类的set和get方法

      本文链接:https://www.haomeiwen.com/subject/rendbktx.html