gpt4 book ai didi

java - 从静态方法访问非静态成员变量

转载 作者:行者123 更新时间:2023-12-04 05:50:56 26 4
gpt4 key购买 nike

我刚刚开始使用 Java,我需要一些帮助。我知道我不能对静态方法进行非静态引用,但我需要帮助来解决它。我正在阅读您可以通过创建对象的实例来访问非静态成员变量,但我不确定该怎么做。这是一些关于代码的。任何帮助或指示将不胜感激。

package tweetClassification;        

public class PriorityRules {

public static void prioritize( final String userInput ){

ClassificationRule.apply( aUserInput ); //ERROR
// Cannot make a static reference to
// the non-static method apply(String)
// from the type ClassificationRule
}
}

*----------------------------------------------------------------
package tweetClassification;

public class ClassificationRule {

public void apply (final String aUserInput) {

apply( aUserInput );
}
}

*----------------------------------------------------------------
package tweetClassification;

import java.util.ArrayList;

public class RuleFirstOccrnc extends ClassificationRule {

public void apply ( final String aUserInput ){

for( TweetCat t: TwtClassif.tCat )
applyFirstOccurrenceRuleTo( t, aUserInput );
}

*----------------------------------------------------------------
package tweetClassification;

public class RuleOccrncCount extends ClassificationRule {

public void apply ( final String aUserInput ){

for( TweetCat t: TwtClassif.tCat )
applyOccurrenceCountRuleTo( t, aUserInput );
}

最佳答案

您不能从静态方法引用非静态变量,因为该静态方法附加到类,而不是任何特定实例。从它的角度来看,那些非静态变量甚至都不存在。但是,您的问题具有误导性,因为您的代码中没有任何地方显示任何非静态变量成员。您的问题似乎更像是如何实例化适当的分类规则并将其应用于静态方法参数。有很多方法可以做到这一点,最简单的方法是简单地实例化一个规则的实例:

ClassificationRule rule = new RuleFirstOccrnc();
rule.apply(userInput);

但鉴于您有多个分类规则子类,您可能需要更复杂的方法来实例化它们。工厂在这里可能很有用,或者您可以使用一些更高级的对象创建模式,例如注入(inject)。

关于java - 从静态方法访问非静态成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com