在接口实现中更改私有变量值

时间:2015-04-24 21:10:36

标签: java interface access-modifiers

我无法更改接口实现中私有变量(实现接口的类)的值。

我有一个界面 IClient

public interface IClient{

    void showNewArticles(Article a);
}

以及实施 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中添加元素,但如果我创建私有或公共方法(在Client类内)并执行在其中listModelArticles.addElement(infoArticles),infoArticle正确插入到模型中。是否与访问修饰符有关?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。调用Client类的IClient方法的类是一个问题。感谢所有试图解决我问题的人:)

我的解决方案:

@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。但现在它有效。