【问题标题】:While converting from String to Object getting Typecast Error从字符串转换为对象时出现类型转换错误
【发布时间】:2015-04-28 05:04:24
【问题描述】:

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

        }

请帮助/指导

【问题讨论】:

  • 你能提供堆栈跟踪吗?
  • expriyDate 属于 TimeLimit 类型,而 timeExpiryDate 属于 String 类型,因此会出现异常(最里面的 if 语句中的第三条语句)。你到底想做什么?
  • 将字符串 timeExpiryDate 转换为 TimeLimit expiryDate,然后稍后返回/设置它。
  • @Surmeet 你应该有一些逻辑来转换 String timeExpiryDate ot TimeLimit instance expiryDate。你在哪里处理?您只是将 String 分配给 TimeLimit
  • @user3694267,也试过了,还是不行……

标签: java string object casting


【解决方案1】:

timeExpiryDate 在您的代码中声明为StringexpiryDate 被声明为 TimeLimit

你有电话

expiryDate = timeExpiryDate;

它甚至无法编译,因为您试图将 String 引用分配给 TimeLimit 引用。

您需要编写某种转换方法,该方法接受String 并从中创建TimeLimit。它可以是某处的实用方法,也可以是TimeLimit 类中的TimeLimit(String timeRepresentation) 构造函数。然后例如你可以写

expiryDate = new TimeLimit(timeExpiryDate);

expiryDate = SomeClass.convertToTimeLimit(timeExpiryDate);

Java 与 C++ 不同(如果您习惯了 C++)。 Java 不会像 C++ 那样自动调用“转换”构造函数。所以即使你定义了TimeLimit(String) 构造函数,Java 也不会自动调用它来进行转换。您需要显式调用它。

但无论如何,如果不在某处编写一些转换方法然后调用它,就无法完成分配。

【讨论】:

  • 感谢您的帮助,但不想更改我为 TimeLimit 制作的 POJO 类.....需要一些逻辑将字符串转换为我发布示例的类中的 TimeLimit 对象以上。
  • 然后在某个类中编写一些方法来进行转换并调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多