1

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

 1 year ago
source link: https://www.v2ex.com/t/941640
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Java

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

  OldCarMan · 4 小时 3 分钟前 · 296 次点击

rt,代码逻辑大概是这样:

public class MyFactoryBean implements FactoryBean<MyBean> {

    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/0x0000000800e9b558@4225”
        
	UserListener<User1> userListener=new UserListener<User1>(){
		@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/0x0000000800e9b558@4225

代理对象,请问有什么方式能直接得到该类具体的类型吗?除了把对象类型一并传过去

 Cache.addUserListener(userListener,User1.class);
  • ps: 😅哈哈,框架还不是很熟,大家尽管吐槽指正,谢谢大家回复!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK