3

私は次のように定義されたクラスを持っています...

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

コードに示されているようにコンストラクターを定義したため、なぜこれが発生するのかわかりません。誰かがこの問題で私を助けてくれませんか。

4

2 に答える 2

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を参照してください。

于 2012-04-17T22:20:41.303 に答える
1

それはコンストラクタではありません...(コンストラクタには、クラスの型である暗黙の「戻り値の型」があります)。これには明示的な戻り値の型があるため、コンストラクターではなく、 という名前の通常のメソッドdfです。

したがって、として使用すると無効になりますnew df(...)。これは、まさにエラー メッセージが示す内容です。一方、デフォルトのパラメーターなしのコンストラクターとメソッドnew df().df("x")により、引き続き「機能」します。 String df(String)

コンストラクターに変更するための更新に注意してください。

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;
  }

}

変数名と命名規則、および可変性の還元に取り組んでください:-)

于 2012-04-17T22:26:07.753 に答える