以下是我正在执行的代码并在第14行收到错误
类型不匹配:无法从String转换为TimeLimit
TimeLimit timeLimitValues = timeLimitValues(clientCompanyMarketMapId,
productCatagory, productSubCatagory, supplierId);
String timeLimitValue = timeLimitValues.getTimeLimitValue();
String timeLimitTC = timeLimitValues.getTimeLimitTC();
timeLimitValues.getBookTravelDateTC();
String isPaymentEnabledFlag = timeLimitValues.getIsPaymentEnbld();
String isExpOnBkDate = timeLimitValues.getIsExponBkDate();
String timeExpiryDate = null;
TimeLimit expiryDate = new TimeLimit();
if (isPaymentEnabledFlag.equals("Y")) {
if (isExpOnBkDate.equals("Y")) {
if (timeLimitTC.equals("DAYS")) {
c.add(Calendar.DATE, Integer.parseInt(timeLimitValue));
timeExpiryDate = sdf.format(c.getTime());
expiryDate = timeExpiryDate;
System.out.println("Expiry Date: " + timeExpiryDate);
}
请帮助/指导
答案 0 :(得分:2)
timeExpiryDate
在您的代码中声明为String
。 expiryDate
被声明为TimeLimit
。
你有一行
expiryDate = timeExpiryDate;
甚至无法编译,因为您尝试为String
引用分配TimeLimit
引用。
您需要编写某种转换方法,该方法需要String
并从中创建TimeLimit
。它可以是某个实用程序方法,也可以是TimeLimit(String timeRepresentation)
类中的TimeLimit
构造函数。然后例如你可以写
expiryDate = new TimeLimit(timeExpiryDate);
或
expiryDate = SomeClass.convertToTimeLimit(timeExpiryDate);
Java不像C ++(如果你已经习惯了)。 Java不会自动调用"转换"像C ++这样的构造函数。因此,即使您定义了TimeLimit(String)
构造函数,Java也不会自动调用它来进行转换。你需要明确地调用它。
但无论如何,如果没有你在某处编写一些转换方法然后调用它,就无法完成任务。