2012-04-17 51 views
3

我有一個類定義如下......「找不到符號:構造函數...」在Java中?

public class df { 
    String dt; 
    String datestring; 

    public String df(String dtstring) throws Exception { 
     dt=dtstring; 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
     Date inpdate = formatter.parse(dt); 
     datestring = formatter.format(inpdate); 
     Date outpdate = formatter.parse(datestring); 
     SimpleDateFormat newformatter = new SimpleDateFormat("dd/MM/yyyy"); 
     datestring = newformatter.format(outpdate); 
     return datestring; 
    } 
} 

創建該類的實例如下,其中rsnpos.getString(1)包含YYYY-MM-DD格式的日期(例如,2010-01-01).. 。

new df(rsnpos.getString(1)) 

在編譯過程中,我得到了以下錯誤......

cannot find symbol 
symbol : constructor df(java.lang.String) 
location: class df 

我不明白爲什麼會這樣,因爲我已經定義了一個常量如我的代碼所示。有人可以幫助我解決這個問題。

回答

1

這不是一個構造函數...(構造函數有一個隱含「返回類型」,類的類型)。這有一個明確的返回類型,因此不是構造函數,而是一個名爲df的常規方法。

因此,當用作new df(...)時,這正是錯誤消息所說的那樣,它是無效的。另一方面,由於默認的無參數構造函數和方法String df(String)new df().df("x")仍然「工作」。

注意更新,把它變成一個構造函數:

public class df 
{ 

    String dt; 
    String datestring; 
    // Remove return type (and keep matched name) to make it a constructor. 
    public df(String dtstring) throws Exception 
    { 
    dt=dtstring; 
    ... 
    datestring = newformatter.format(outpdate); 
    // Constructors cannot "return" 
    // return datestring; 
    } 

} 

請在變量名和命名約定和易變性終極版:-)

+0

感謝您的答覆工作...這是真的很有幫助... – ARNAB2012 2012-04-18 07:44:09

1
public class df 
    { 
String dt; 
String datestring; 
public df(String dtstring) throws Exception 
     { 
       dt=dtstring; 
       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
       Date inpdate = formatter.parse(dt); 
       datestring = formatter.format(inpdate); 
       Date outpdate = formatter.parse(datestring); 
       SimpleDateFormat newformatter = new SimpleDateFormat("dd/MM/yyyy"); 
       datestring = newformatter.format(outpdate); 
     } 
    } 

請參閱http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html