线程“main”中的异常 java.lang.NullPointerException:无法存储到对象数组,因为“this.DogNames”为 null 在 GoldenRetriever.GR(IDemo.java:16) 在 IDemo.main(IDemo.java:26)
class Dog {
public String[] DogNames;
String DogBreed;
void PrintBreed(){System.out.println("Breed: " + DogBreed);}
void PrintName(){System.out.println("Name(s): " + DogNames);}
void PrintBoth(){
System.out.println("Name(s): " + DogNames + "Breed: " + DogBreed);
}
}
class GoldenRetriever extends Dog{
public void GR(String... names){
GoldenRetriever myGR = new GoldenRetriever();
for(int i=0; i<names.length; i++){
DogNames[i] = names[i];
}
myGR.DogNames = DogNames;
myGR.DogBreed = "Golden Retriever";
}
}
public class IDemo{
public static void main(String[] args){
var myGoldenRetriever = new GoldenRetriever();
myGoldenRetriever.GR("Buddy", "Dude");
myGoldenRetriever.PrintName();
myGoldenRetriever.PrintBreed();
}
}
您收到 NullPointerException 因为您没有实例化 DogNames 数组
public String[] DogNames = new String[10] // where 10 is the size of your array;
要显示数组的内容,不要只打印 DogNames,因为它不会显示数组的内容,而是显示类名 + 哈希码,您可以在此处阅读相关信息 java-system-out-println-an-数组
void PrintName(){System.out.println("Name(s): " + Arrays.toString(DogNames));}
void PrintBoth(){System.out.println("Name(s): " + Arrays.toString(DogNames) + "Breed: " + DogBreed);}
您可以删除这部分 GoldenRetriever myGR = new GoldenRetriever();因为您正在创建一个新对象并为其赋值,所以在 main 中您不会有这些值
public void GR(String... names){
for(int i=0; i<names.length; i++){
DogNames[i] = names[i];
}
DogNames = DogNames;
DogBreed = "Golden Retriever";
}