美文网首页
Java怪事之匿名类无法通过反射获取到的类中获取到一些如函数、出

Java怪事之匿名类无法通过反射获取到的类中获取到一些如函数、出

作者: 东南枝下 | 来源:发表于2022-09-30 22:22 被阅读0次
    • 定义一个接口如下
    @FunctionalInterface
    public interface Action<T, V> {
    
        /**
         * 执行操作
         *
         * @param param 入参
         * @return 返回参数
         */
        V execute(T param);
    }
    
    
    • 定义一个使用该接口的类
      在构造函数中看一下action参数的具体类型
    public class FlowNode {
    
        public FlowNode(String name, Action<?, ?> action) {
            Class<?> clz = action.getClass();
            this.name = name;
            this.action = action;
            this.next = new ArrayList<>();
        }
    
    ......
    
    
    • 匿名传入Acrtion
      方式一:lambda表达式
    FlowNode two = new FlowNode("two", (Action<Boy, Girl>) boy -> {
                boy.setAge(boy.getAge() + 1);
                System.out.println("第 3 个节点------参数:" + boy);
                Girl girl = new Girl();
                BeanUtils.copyProperties(boy, girl);
                return girl;
            });
    
    

    方式二:匿名对象,其实和lambda是一样的

    FlowNode two = new FlowNode("two", new Action<Boy, Girl>() {
                @Override
                public Girl execute(Boy boy) {
                    boy.setAge(boy.getAge() + 1);
                    System.out.println("第 3 个节点------参数:" + boy);
                    Girl girl = new Girl();
                    BeanUtils.copyProperties(boy, girl);
                    return girl;
                }
            });
    
    

    如图所示,是获取不到具体的类型的,就没法通过反射做一些事情


    image.png

    相关文章

      网友评论

          本文标题:Java怪事之匿名类无法通过反射获取到的类中获取到一些如函数、出

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