问题:
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);
}
}