You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Essbase Java API打印EssDBFILEINFO数组失败求助

问题:打印EssDBFILEINFO数组未显示有效内容,该用枚举器还是迭代器?

我尝试打印数组但未成功,已搜索并尝试多种方法均无效。相关Javadoc对应IEssCube的listDbFiles方法。请问我应该使用枚举器还是迭代器?

代码

EssDBFILEINFO[] PagSize = cube.listDbFiles(IEssCube.ESS_FILETYPE_DATA);

System.out.println(PagSize.length);
            
for (int i = 0; i < PagSize.length; i++) {
    System.out.println(PagSize[i]);
}
           
System.out.println(Arrays.toString(PagSize));
System.out.println(Arrays.deepToString(PagSize));

输出

7
com.essbase.api.datasource.EssDBFILEINFO@1324409e
com.essbase.api.datasource.EssDBFILEINFO@2c6a3f77
com.essbase.api.datasource.EssDBFILEINFO@246ae04d
com.essbase.api.datasource.EssDBFILEINFO@62043840
com.essbase.api.datasource.EssDBFILEINFO@5315b42e
com.essbase.api.datasource.EssDBFILEINFO@2ef9b8bc
com.essbase.api.datasource.EssDBFILEINFO@5d624da6
[com.essbase.api.datasource.EssDBFILEINFO@1324409e, com.essbase.api.datasource.EssDBFILEINFO@2c6a3f77, com.essbase.api.datasource.EssDBFILEINFO@246ae04d, com.essbase.api.datasource.EssDBFILEINFO@62043840, com.essbase.api.datasource.EssDBFILEINFO@5315b42e, com.essbase.api.datasource.EssDBFILEINFO@2ef9b8bc, com.essbase.api.datasource.EssDBFILEINFO@5d624da6]
[com.essbase.api.datasource.EssDBFILEINFO@1324409e, com.essbase.api.datasource.EssDBFILEINFO@2c6a3f77, com.essbase.api.datasource.EssDBFILEINFO@246ae04d, com.essbase.api.datasource.EssDBFILEINFO@62043840, com.essbase.api.datasource.EssDBFILEINFO@5315b42e, com.essbase.api.datasource.EssDBFILEINFO@2ef9b8bc, com.essbase.api.datasource.EssDBFILEINFO@5d624da6]

EssDBFILEINFO类方法截图

EssDBFILEINFO类可用方法


解答

你看到的输出是对象的默认toString()结果,和枚举器/迭代器无关,核心问题是EssDBFILEINFO类未重写toString()方法,所以打印时只会输出类名+哈希码。

解决方法

  1. 无需切换枚举器或迭代器,当前数组遍历方式完全可行
  2. 调用EssDBFILEINFO的getter方法获取有效属性,从截图可见的方法包括getFileName()、getSize()、getLastModified()等,修改代码示例:
EssDBFILEINFO[] pagSize = cube.listDbFiles(IEssCube.ESS_FILETYPE_DATA);

System.out.println(pagSize.length);
            
for (EssDBFILEINFO fileInfo : pagSize) {
    System.out.printf("文件名:%s,大小:%d,最后修改时间:%s%n", 
        fileInfo.getFileName(), 
        fileInfo.getSize(), 
        fileInfo.getLastModified());
}

关于枚举器/迭代器的疑问

  • 数组本身用普通for循环或增强for循环(foreach)最直接高效
  • 若一定要用迭代器,可将数组转为List后使用,但属于冗余操作:
List<EssDBFILEINFO> fileList = Arrays.asList(pagSize);
Iterator<EssDBFILEINFO> iterator = fileList.iterator();
while (iterator.hasNext()) {
    EssDBFILEINFO fileInfo = iterator.next();
    // 调用getter打印属性
}

内容的提问来源于stack exchange,提问作者sebroux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:57:06