问题:
intereface接口文件并未定义成员变量,通过接口的一个方法set一个成员作为接口实现类型的内部成员变量,
调用接口实现类型的其他方法,并未能感知到该成员的存在(或者说是并未能得到正确的成员,??也可能是因为并发多线程所致的错误??)。
interface UserAction{ void setUser(User mUser); void UserSpeakName(); }
public void UserActionImp implement UserAction{ User mUser; public void setUser(User user){ mUser=user; } public void UserSpeakName(){ System.out.println("username:"+mUser.Name); } }
分析:
接口实现类型的实例是通过反射创建的,通过接口文件并没有能反应出该成员的存在,所以在并发下发生设置的内部成员发生变化,不能获取到正确的值(mUser)。
解决方法:
在调用接口时直接设置该成员:
interface UserAction{ void UserSpeakName(User mUser); }
public void UserActionImp implement UserAction{ public void UserSpeakName(User mUser){ System.out.println("username:"+mUser.Name); } }