【问题标题】:get method returns null array when invoked form anther class . It results nullPointerException [duplicate]get 方法在从另一个类调用时返回空数组。它导致 nullPointerException [重复]
【发布时间】:2017-06-24 20:47:30
【问题描述】:

当我尝试使用 get 方法从另一个类访问数组元素时,我不断收到 NullPointerException。我的代码使用构造函数来初始化数组,而且效果很好。

MagazineValue.class

public class MagazineValue {

public MagazineValue(){
}
private String[]magazineName;
public MagazineValue(String[] magazineName){


    this.magazineName = new String[magazineName.length];
    System.arraycopy(magazineName, 0, this.magazineName, 0,
    magazineName.length);

}

public String[] getMagazineName(){
    return magazineName;
}
}

这里的构造函数将参数中的数组值复制到私有数组变量中。 当我尝试从另一个类调用 getMagazineName() 时,它显示该数组仍然为空。有什么办法可以解决这个问题吗?这确实看起来很容易,但我花了很多时间。

FirebaseValueListner.class

public class FirebaseValueListner {
public void setMagazineName(){
    String[]magazineName={"African Daily" , "African Bussines", "African Women"};
    MagazineValue setValue= new MagazineValue(magazineName);
}

}

FirebaseValueListner 从 Firebase 数据库中获取值并将其值保存到 ArrayList 中,然后将值复制到数组中。 数组被传递给 MagazineValues 的构造函数。

LibraryFragment.class `

public class LibraryFragment {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[]magazineName;
    MagazineValue getMagazineName;
    getMagazineName=new MagazineValue();

    magazineName=getMagazineName.getMagazineName();
    System.out.println("Magazine Name : " +magazineName[1]);


      }

    }

`

【问题讨论】:

  • 你能分享一下通话的minimal reproducible example吗?
  • @Mureinik 请稍等。
  • 使用您发布的此代码是不可能的.. 您正在这样做 this.magazineName = new String[magazineName.length]; 所以杂志不能为空
  • 你能分享你的代码你是如何从其他类调用这个方法的
  • 顺便说一句,指向 null ref 的数组与包含指向 null 的对象的数组完全不同......你知道吗??

标签: java arrays class constructor nullpointerexception


【解决方案1】:

您必须定义了一个不带参数的构造函数。因为你写getValue = new MagazineValue();可能没有初始化字段magazineName

【讨论】:

  • 我已经这样做了,一定忘记放在那里了。
  • @NathanDamtew 您使用默认构造函数的事实是这里的问题。您不会在默认构造函数中初始化数组。
猜你喜欢
  • 2015-03-15
  • 2016-01-24
  • 1970-01-01
  • 2019-12-28
  • 2019-03-24
  • 2015-03-27
  • 2021-03-20
  • 1970-01-01
  • 2016-11-08
相关资源
最近更新 更多