美文网首页
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