java - 从对象数组列表中调用方法

标签 java methods static arraylist non-static

我刚刚开始使用 Java,但在使用以下代码时遇到了问题。我正在使用类似的方法从静态方法调用非静态 apply 方法,但我认为它不是很有效。我设置了需要应用的规则的数组列表,但我无法让它工作。

    ClassificationRule rules = new RuleFirstOccrnc();
    ClassificationRule rules1 = new RuleOccrncCount();
    rules.apply(aUserInput);
    rules1.apply(aUserInput); 

尝试从 ClassificationRule 调用 apply() 方法时收到此错误“对于 ArrayList 类型,未定义方法 apply(String)”。任何帮助将不胜感激!

package tweetClassification;

import java.util.ArrayList;

public class PrioritRuls {

    //Set of rules to be applied
    final static ArrayList<ClassificationRule> rulesA
        = new ArrayList<ClassificationRule>();

    static{
        rulesA.add( new RuleFirstOccrnc() );
        rulesA.add( new RuleOccrncCount() );
    }

    // ******************************************* 
    public static void prioritize( final String aUserInput ){

        rulesA.apply(aUserInput); //ERROR
       // The method apply(String) is undefined
       // for the type ArrayList<ClassificationRule>
        }
} 
package tweetClassification;

public class ClassificationRule {

     // *******************************************
     public void apply (final String aUserInput) {  

        apply( aUserInput );
        }
}

最佳答案

正确,因为您正在调用数组列表对象的 apply 方法,而不是数组列表的内容。

将其更改为类似的内容

rulesA.get(0).apply()

或者,如果您想在每个元素上调用它,则需要遍历列表。

for (ClassificationRule rule:rulesA){
  rule.apply(aUserInput);
}

关于java - 从对象数组列表中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067349/

相关文章:

java - 两个整数数组的成对乘法。如果它们的长度不同,则较短的需要缠绕

javascript - 创建一个函数数组,在没有循环的情况下返回它们的索引

java - 令人困惑的 Android SDK 错误 : static reference to non-static method

swift - 在 Swift 中,是否有像 self 这样的关键字,但用于类?

java - 如何创建纹理以覆盖在增强面部网格上?

java - 为什么example中的 "@override"before functions报错?

java - 奇怪的 "String index out of range: 0"错误

go - 将方法参数传递给函数

java - 方法未返回数组的正确值。我究竟做错了什么?

java - 这是局部变量还是静态变量捕获?