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”的值呢?无需将整个词汇表作为参数传递,或者将 BayesianClassifier 实例作为字段提供给类 Category,这肯定是可能的?
最佳答案
正如评论中所述,可以通过反射来完成。如果您无法将词汇作为参数传递,那么请使用此处的答案:Previous Answer to Same Question
如果您不想使用反射,您有两个选择:
选项 1:
只需在调用updateProbativity
时传入Vocabulary对象即可。 Java 是按值传递的,但这并不意味着整个 Vocabulary 对象都会被复制和传递。这是解释here 。本质上,将传递指向对象的指针的值,这样做只占用一个“指针”的额外空间。
选项 2:
创建 Category
对象时,添加 BayesianClassifier
作为字段。
关于java - 我的方法(被另一个类调用)如何从该类获取变量而不将其作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166318/