2013-12-08 58 views
0

我有一個類,LogAnalyzer(),我想更改構造函數,因此它可以採用類LogfileReader的實例。這個實例將由LogAnalyzer類進行分析。更改構造類,Java

下面是構造函數的代碼:

public LogAnalyzer() 
{ 
    // Create the array object to hold the hourly 
    // access counts. 
    hourCounts = new int[24]; 
    // Create the reader to obtain the data. 
    reader = new LogfileReader(); 
} 

這裏是LogAnalyzer類的字段:

// Where to calculate the hourly access counts. 
private int[] hourCounts; 
// Use a LogfileReader to access the data. 
private LogfileReader reader; 

我應該怎麼辦?

+0

提示:它要求您創建一個帶參數的構造函數。 –

回答

0

試試這個:

public class LogAnalyzer() { 

private int[]hourCounts; 
private LogfileReader reader; 

    // version that accepts LogFileReader 
    public LogAnalyzer(LogfileReader r){ 
     hourCounts=new int[24]; 
     reader=r; // use the passed LogfileReader object, instead of creating one 
    } 

    // no-argument version 
    public LogAnalyzer(){ 
     hourCounts=new int[24]; 
     reader=new LogfileReader(); 
    } 

} 

當你推出帶有參數的構造函數,你失去了隱含的無參數的構造函數,所以這是一個好主意,將其創建爲好。

+1

謝謝先生!它幫助了很多!這部分代碼:reader = r; ,這正是我想要弄清楚的。 – UserFuser

+0

歡迎,並樂意提供幫助。 – Jops

0

構造函數也可能有參數。

public LogAnalyzer(LogfileReader r){ 
    this.reader = r; 
    //insert code here 
} 
+0

我應該如何初始化該構造函數內部的LogfileReader? – UserFuser

+0

@ user3079108檢查編輯 –

+0

感謝您的幫助人! – UserFuser