如何从另一个类引用数组

时间:2014-01-19 09:51:50

标签: java arrays

说实话,我真的在努力学习Java,我试图从另一个类中访问一个数组。我相信我已经在这段代码中创建了数组

public class aff_array {
        String name;
    public static void main (String[] args) {

        int z = 3; //total no of affirmations
        int x = 1;
        aff_array[] afz = new aff_array[z];  //dim

        while ( x < z ) {
            afz[x] = new aff_array();  // create objects for array
            x = x + 1;
        }

        afz[1].name = "i am the best";
        afz[2].name = "you are the rest";

    }

但我真的很难弄清楚我如何从另一个类访问afz [1] .name。这可能是基本但我真的很挣扎..

3 个答案:

答案 0 :(得分:2)

只要将其创建为自动变量(换句话说,本地变量),就无法从其他类访问它。在上面的代码中,你的“afz”结构只能在main方法中可见(并且只能在它的instatiation之后才能使用)。要使其对其他类可见,您可以将其定义为实例变量。即:

public class aff_array {

    String name;
    aff_array[] afz;

public static void main (String[] args) {

    int z = 3; //total no of affirmations
    int x = 1;
    afz = new aff_array[z];  //dim

首先,你应该将它定义为私有,并创建一个getter方法(这是一种常见的做法,尊重封装),然后只需调用此方法就可以在另一个类上获取它。

答案 1 :(得分:2)

您可以访问aff_array类的公共实例变量“name”

//this will print value of instance variable name
System.out.println(afz[1].name);

//If you want to modify the value of variable
afz[1].name = "modified name";

但不建议这样做。使用私有访问修饰符保护您的实例变量,并使用公共getter,setter方法访问它。

实施例:     公共课aff_array {         私有字符串名称;         public String getName()         {             return this.name;         }

    public void setName(String new_name)
    {
        //You can add some validations here
        this.name = new_name;
    }

    public static void main (String[] args) {

    int z = 3; //total no of affirmations
    int x = 1;
    aff_array[] afz = new aff_array[z];  //dim

    while ( x < z ) {
        afz[x] = new aff_array();  // create objects for array
        x = x + 1;
    }

    //To print name 
    System.out.println(afz[1].getName());

    //to set new value to name
    afz[1].setName("i am the best");
    afz[2].setName("you are the rest");

}

答案 2 :(得分:1)

所以我试图添加getter,它看起来像这样     公共课aff_array {     字符串名称;     aff_array [] afz;

public aff_array[] getAfz() {
    return afz;
}

public String getName() {
    return name;
}

public static void main (String[] args) {

        int z = 3; //total no of affirmations
        int x = 1;
        aff_array[] afz = new aff_array[z];  //dim

        while ( x < z ) {
            afz[x] = new aff_array();  // create objects for array
            x = x + 1;
        }

        afz[1].name = "i am the best";
        afz[2].name = "you are the rest";

    }

这是另一个类,我希望数组值用aff_array [] getAfz()替换aff_array.class.getName(),但我不知道如何做或参考afz(1)例如(getName是工作)

 public void onReceive(Context context, Intent intent)
    {

        setNotification(context, aff_array.class.getName());
        WakeLocker.acquire(context);
        Toast.makeText(context,"One shot alarm received. No more toasts will be shown.", Toast.LENGTH_SHORT).show();
        WakeLocker.release();
    }