在接口实现中更改私有变量值
Change private variable value inside interface implementation
我在更改接口实现内部的私有变量(实现接口的 class 的值)时遇到问题。
我有一个接口IClient:
public interface IClient{
void showNewArticles(Article a);
}
和一个 class Client 实现 IClient:
public class Client implements IClient{
( .... )
private DefaultListModel<String> listModelArticles = new DefaultListModel<>();
( .... )
@Override
public void showNewArticles(Article a){
String infoArticle = ("["+a.getKeyword().toUpperCase()+"] "+a.getTitle());
listModelArticles.addElement(infoArticle);
listArticles.setModel(listModelArticles);
}
}
问题是当我执行 showNewArticles()
方法时,它不会在 listModelArticles
中添加一个元素,但是如果我创建一个私有或 public 方法(内部Client class ) 并在其中执行 listModelArticles.addElement(infoArticles)
,infoArticle 已正确插入到模型中。与访问修饰符有关吗?
我找到了解决方案。调用客户端 class 的 IClient 方法的 class 有问题。感谢所有试图解决我的问题的人:)
我的解决方案:
@Override
public void showNewArticles(Article a) throws RemoteException {
IClient client = MainController.getInstance().getClient();
client.showNewArticles(a);
}
解决前:
@Override
public void showNewArticles(Article a) throws RemoteException {
ClientI.getInstance().showNewArticles(a);
}
虽然我使用的是 Singleton,但我不知道为什么它以前不起作用。不过现在可以了。
我在更改接口实现内部的私有变量(实现接口的 class 的值)时遇到问题。
我有一个接口IClient:
public interface IClient{
void showNewArticles(Article a);
}
和一个 class Client 实现 IClient:
public class Client implements IClient{
( .... )
private DefaultListModel<String> listModelArticles = new DefaultListModel<>();
( .... )
@Override
public void showNewArticles(Article a){
String infoArticle = ("["+a.getKeyword().toUpperCase()+"] "+a.getTitle());
listModelArticles.addElement(infoArticle);
listArticles.setModel(listModelArticles);
}
}
问题是当我执行 showNewArticles()
方法时,它不会在 listModelArticles
中添加一个元素,但是如果我创建一个私有或 public 方法(内部Client class ) 并在其中执行 listModelArticles.addElement(infoArticles)
,infoArticle 已正确插入到模型中。与访问修饰符有关吗?
我找到了解决方案。调用客户端 class 的 IClient 方法的 class 有问题。感谢所有试图解决我的问题的人:)
我的解决方案:
@Override
public void showNewArticles(Article a) throws RemoteException {
IClient client = MainController.getInstance().getClient();
client.showNewArticles(a);
}
解决前:
@Override
public void showNewArticles(Article a) throws RemoteException {
ClientI.getInstance().showNewArticles(a);
}
虽然我使用的是 Singleton,但我不知道为什么它以前不起作用。不过现在可以了。