【问题标题】:Add a method to an exited ArrayList向已退出的 ArrayList 添加方法
【发布时间】:2014-10-03 04:46:41
【问题描述】:

我有一个这样的数组:

ArrayList<FuelData> arrValue = objrp.FuelReport(AccountID,
                    deviceID, datefrom, dateto, timezone, timefrom, timeto);
            for (int i = 0; i < arrValue.size(); i++) {
                String statusDescription = StatusCode.getDescription(AccountID,
                        arrValue.get(i).GetStatusCode(), privLabel, null);
                String detail = "Mức nhiên liệu:"
                        + Math.round(arrValue.get(i).GetFuelLevel())
                        + " l\\nQuãng đường đi được:"
                        + Math.round(arrValue.get(i).GetFuelLevel())// adding GetOdometer here
                        + " km\\nThời gian: "
                        + ConvertFromEpoch(arrValue.get(i).getTimeStamp())
                        + "\\nĐịa điểm:"
                        + GetUTF8FromNCRDecimalString(arrValue.get(i)
                                .getAddress()) + "\\nTrạng thái: "
                        + GetUTF8FromNCRDecimalString(statusDescription);

                strscr += "chartData.push({fuelLevel: "
                        + arrValue.get(i).GetFuelLevel() + ",odometerKm: "
                        + arrValue.get(i).GetOdometerKM() + ", detail:\""
                        + detail + "\"});\n";
            }

现在我想添加这个方法:

GetOdometer(String accountID, String deviceID, String timestamp)

到这一行:+ Math.round(arrValue.get(i).GetFuelLevel())// adding GetOdometer here。这个方法不属于FuelData类,而是在其他类。我可以这样做吗?如果可以,我该怎么做?

【问题讨论】:

  • 这不是array 这是ArrayList
  • 创建另一个类的实例,然后使用instance.getOdometer() 调用它
  • @Tirath 我对你的建议做了同样的事情,但我仍然无法获得 getOdometer() 的值
  • 能分享一下getOdometer()的签名吗
  • 尝试将您的代码缩减为minimal example(最后,删除所有那些被注释掉的部分)。在此过程中,您可能已经看到了错误,如果没有,我们可以更轻松地提供帮助。

标签: java arraylist


【解决方案1】:

调用arrValue.get(i) 会在arrValue 数组列表中的ith 索引处获取FuelData 类的对象。

现在,如果在 FuelData 中定义了方法 getOdometer() - 您应该可以使用以下语句访问它

    arrValue.get(i).getOdometer("value1", "value2", "value3")

确保getOdometer 方法返回一个字符串或至少返回一些内容。

另外,正如我注意到您提到的,此方法未在 FuelData 中定义。那么你应该做下面的罚款

//create Instance Of This Other Class before the for loop
//then call `GetOdometer(String accountID, String deviceID, String timestamp)`
//make sure GetOdometer is returning something
//follow camel casing for naming methods

例如,

///create instance
OtherClass c = new otherClass();
for (int i = 0; i < arrValue.size(); i++) {
.
.
String detail = "Mức nhiên liệu:"
               + Math.round(arrValue.get(i).GetFuelLevel())
               + c.GetOdometer("value1", "value2", "value3")

仅当GetFuelLevel 的方法行为对于此OtherClass 的所有对象都相同时,才尝试更改上述代码。否则移动

OtherClass c = new otherClass();

在 for 循环中。如果它不起作用,请在 cmets 中告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多