問題如下:
class FileStruct{
int intPara;
FileStruct(){
intPara=0;
}
public void setintPara(int i){
intPara=i;
}
public int getintPara(){
return intPara;
}
}
class Read{
public void main(String[] args){
FileStruct[] fs=new FileStruct[10];
for(int i=0;i<10;i++)
System.out.println(fs[i].getintPara);
}
此時程序會拋出異常:java.lang.NullPointerException
在以上程序中已存在兩個錯誤:
對數組的初始化工作沒有結束
在類FileStruct中沒有將構造器函數公有化
錯誤原因:
1. 在Java中對非基本數據初始化時,必須使用new。在使用new創建數組後,此時數組還是一個引用數組。只有再創建新的對象,並把對象賦值給數組引用,到此初始化結束。
- 在以上程序中如果再使用new創建對象對數組引用賦值,仍會拋出異常:The constructor FileStruct() is not visible
基於此,以上程序應改爲:
class FileStruct{
int intPara;
public FileStruct(){
intPara=0;
}
public void setintPara(int i){
intPara=i;
}
public int getintPara(){
return intPara;
}
}
class Read{
public void main(String[] args){
FileStruct[] fs=new FileStruct[10];
for(int j=0;j<10;j++)
fs[j]=new FileStruct();
for(int i=0;i<10;i++)
System.out.println(fs[i].getintPara);
}
轉載自error