Java访问我创建的另一个类的数组元素

时间:2018-02-03 16:14:12

标签: java arrays class methods static

我正在使用main方法

在类中创建一个数组
Word attempts = new Word (26);

Word类中的字段是

private String [] attempts;

Word类中的构造函数是

public Word (int a){
        attempts = new String [a];
        create(attempts);
    }

其中create是一个使每个数组元素都为空字符串("")的方法。在类Word中,我还有一个getAttempts()方法来访问尝试数组。现在,我想创建一个类字母,我在for循环中传递之前创建的数组Word []。我尝试使用Word.getAttempts()[i],但是我收到错误Cannot make a static reference to the non-static method getAttempts() from the type Word。根据我的理解,当方法是静态的时,您不必在调用方法之前创建对象。我不知道如何将Main方法中创建的数组传递给此Letter类。有什么帮助吗?

编辑:这是我的Word课程

public class Word {

private String [] attempts;

public String[] getAttempts() {
    return attempts;
}

public void create (String [] attempts){
    for (int i=0; i<attempts.length; i++){
        attempts[i]="";
    }
}

public Word (int a){
    attempts = new String [a];
    create(attempts);
    }
}

总而言之,我在类中使用Main类型创建一个数组,我希望将该数组传递给单独的类。

1 个答案:

答案 0 :(得分:3)

Word.getAttempts()

...就是如何在类getAttempts中访问名为Word的静态方法。但是,您的方法getAttempts不是静态的:它适用于您的类的实例。

假设您按如下方式定义了这样的实例:

Word word = new Word(26);

然后,如果方法是公共的,则可以使用以下命令访问数组:

String[] attempts = word.getAttempts();
  

根据我的理解,当方法是静态的时,您不必在调用方法之前创建对象。

是的,但你的方法不是静态的。

  

据我所知,但在Main方法中定义Word数组后,如何在新类中访问它?

通过方法或构造函数传递对象,允许其他对象使用公共方法定义的API与其进行交互。

  

现在,我想在我传递[...]数组

的情况下制作类字母

定义一个名为Letter的类,以及一个接受类Word对象的构造函数。

class Letter
{
    private final Word word;
    public Letter (Word word) {
        this.word = word;
    }
}

main

public static void main (String[] args)
{
    Word word = new Word(26) ;
    Letter letter = new Letter(word);
}

你可以直接传递word.getAttempts(),但是你直接使用另一个类的内部值,这是一种糟糕的风格。通过公共方法更好地处理Word实例,而不是直接访问其私有数据。