Способ BayesianClassifier вызывает метод ниже (метод категории):Как мой метод, который вызывается другим классом, получает переменную из этого класса, не передавая ее в качестве параметра?
public void updateProbabilities(Map<String, int> woordfrequenties) {
for (Map.Entry<String, int> woordfrequentie : woordfrequenties.entrySet()) {
String woord = woordfrequentie.getKey();
int frequentie = woordfrequentie.getValue();
int index = BayesianClassifier.getVocabulary().indexOf(woord);
}
}
Теперь он утверждает, что не-статический метод getVocabulary из BayesianClassifier нельзя ссылаться из статического контекста здесь, как я понимаю, но как же тогда метод получит значение поля «лексика» из экземпляра байесовского классификатора, который вызывает этот метод? Это, безусловно, должно быть возможно без передачи всего словаря в качестве параметра или предоставления класса Category экземпляра байесовского классификатора в качестве поля?
Что делать, если объект какого-либо другого класса называется вашим методом? Как вы узнаете, как получить желаемый индекс? –
Что не так, просто передавая «лексику» в качестве параметра? Это не так долго, и не вызывает никаких проблем. Технически, однако, вы можете проанализировать трассировку стека с помощью Reflection (как правило, НЕ ДЕЛАЙТЕ ЭТО). См. Точный дубликат: http://stackoverflow.com/questions/15329566/how-to-find-the-object-that-called-a-method-in-java – bcsb1001
Вообще говоря, метод - особенно публичный метод - ничего не знает о том, кто его вызвал. Он имеет только свои аргументы и объект, на который он был призван работать. И это хорошо. –