请问一下,在实现 spring 的 FactoryBean 时,如何得到类成员方法里某个局部变量的真实类型?

查看 27|回复 0
作者:OldCarMan   
rt,代码逻辑大概是这样:
public class MyFactoryBean implements FactoryBean {
    private String myProperty;
    public void setMyProperty(String myProperty) {
        this.myProperty = myProperty;
    }
    @Override
    public MyBean getObject() throws Exception {
        return createBean();
    }
    public MyBean createBean(){
            MyBean myBean = new MyBean();
            myBean.setProperty(myProperty);
        
        //下面 UserListener 调试时,UserListener 对象的类型是“MyFactoryBean$$Lambda$400/[email protected]”
        
        UserListener[U] userListener=new UserListener[U](){
                @Override
                public void active(){
                        //doSomething
                }
        };
            Cache.addUserListener(userListener);
        return myBean;
    }
    @Override
    public Class getObjectType() {
        return MyBean.class;
    }
    @Override
   public boolean isSingleton() {
        return true;
    }
}
  • 在传递UserListener时,发现传递的不是 UserListener 实例的具体类型(UserListener 是一个泛型接口),而是一个

    MyFactoryBean$$Lambda$400/[email protected]
    代理对象,请问有什么方式能直接得到该类具体的类型吗?除了把对象类型一并传过去
    Cache.addUserListener(userListener,User1.class);
  • ps: 😅哈哈,框架还不是很熟,大家尽管吐槽指正,谢谢大家回复!
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部