从String转换为Object获取Typecast错误

时间:2015-04-28 05:04:25

标签: java string object casting

以下是我正在执行的代码并在第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);

        }

请帮助/指导

1 个答案:

答案 0 :(得分:2)

timeExpiryDate在您的代码中声明为StringexpiryDate被声明为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也不会自动调用它来进行转换。你需要明确地调用它。

但无论如何,如果没有在某处编写一些转换方法然后调用它,就无法完成任务。

相关问题