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);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.