我的课程定义如下......
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
我不明白为什么会这样,因为我已经定义了一个构造函数,如我的代码所示。有人可以帮我解决这个问题。
答案 0 :(得分: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。
答案 1 :(得分: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;
}
}
请处理变量名称和命名约定以及mutability redux: - )