如何访问不同类Java中的私有变量

时间:2014-12-10 02:56:16

标签: java class private

我有一个类,SpellCheck,(以及其他各种东西)根据Interactions窗口中给出的文件名创建一个trie。例如,当我输入java SpellCheck small.txt时,我知道创建了Lexicon / dictionary,因为它是由SpellCheck中的其他方法显示的。

public class SpellCheck{

 // the dictionary

 private LexiconTrie dict;


 // Constructor;  creates window elements

 public SpellCheck(String[] files) {

  dict = new LexiconTrie(files); 

我需要在我的另一个类LexiconTrie中访问LexiconTrie dict(迭代,根,节点等)中的信息。但是,每当我尝试访问它时(即使使用SpellCheck.dict,它也会给出“dict在SpellCheck中具有私有访问权限”的错误(或类似的内容)。

在这种情况下,我还没有完全理解私人/公共课的互动吗? (如果我没有提供足够的信息,请告诉我) --------- EDIT / UPDATE ---------------------

这是SpellCheck中的方法

public void doAutoComplete() {
  Collection<String> arr = dict.getCompletions(curText.trim().toLowerCase(), num_value);
  String intro = "Up to " + num_value + " completions";
  display(arr, "No matches found", intro);   
}

我需要在LexiconTrie中编写方法getCompletions()。我的教授为我们实现了一个GUI界面。只要用户在搜索栏中键入字母,此GUI界面就会创建一个调用doAutoComplete的搜索栏。在LexiconTrie中,我应该写getCompletions来返回LexiconTrie dict中找到的匹配(“完成”)(在SpellCheck中私下创建和存储)。

我看到了沿着这些方向编写方法:

// Method you have to implement
public Collection<String> getCompletions(String lowerCase, int max) {
  String searchWord = lowerCase;
  int maxReturned = max;
  LinkedList trieMatches = new LinkedList();


  // this is as far as I got, it won't even print the search word. 
 // I get an error from trying to look into dict with .containsWord
  if (dict.containsWord(searchWord)){
    System.out.println(searchWord); 
    //add word/prefix to LinkedList
    //add all children and their children up until max#
  }

  else{
    return null;
  }
}

2 个答案:

答案 0 :(得分:1)

  

我需要在我的另一个类LexiconTrie中访问LexiconTrie dict(迭代,根,节点等)中的信息。

这看起来很奇怪(虽然没有看到更多代码但很难说)。

通常,您不想访问另一个LexiconTrie实例,而是希望在this上运行。

所以而不是

void someMethod(SpellCheck spellCheck){
    spellCheck.dict.something();
}

你会有

void someMethod(){
    something();
}
// called from spellcheck as
this.dict.someMethod();

答案 1 :(得分:1)

创建一个访问私有变量的方法:

public LexiconTrie getDict(){
  return dict;
}