【发布时间】:2015-12-08 21:25:49
【问题描述】:
BayesianClassifier 中的一个方法调用下面的方法(Category 的一个方法):
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);
}
}
现在,它指出来自 BayesianClassifier 的非静态方法 getVocabulary 不能从这里的静态上下文中引用,我理解,但是该方法如何从调用的 BayesianClassifier 实例中获取字段 'vocabulary' 的值这个方法?如果不将整个词汇表作为参数传递,或者给类 Category 提供 BayesianClassifier 的实例作为字段,这肯定是可能的吗?
【问题讨论】:
-
如果某个其他类的对象调用了您的方法怎么办?你怎么知道如何获得所需的索引?
-
只传递
vocabulary作为参数有什么问题?它不是那么长,并且不会引起任何问题。但是,从技术上讲,您可以使用反射分析堆栈跟踪(但是,通常不要这样做)。查看完全相同的副本:stackoverflow.com/questions/15329566/… -
一般来说,一个方法——尤其是一个公共方法——对谁调用它一无所知。它只有它的参数和调用它的对象。这很好。
-
谢谢大家的回复!我将只给类 Category 一个包含调用类 BayesianClassifier 的字段。
标签: java methods static field getter