3

我被要求编辑一个 java 文件,以便它可以检索一个值。值名称并不重要,但它是 SiteCategory。

在 Eclipse 的帮助下,我能够找到看起来像我正在寻找的方法。

然后我创建了这七行,看看其中一条是否返回了我正在寻找的内容。

System.out.println("1) " + p_objRecord.getSiteCategoryList().toString());
System.out.println("2) " + p_objRecord.getSiteCategoryList().getClass());
System.out.println("3) " + p_objRecord.getSiteCategoryList().getSiteCategory().toString());
System.out.println("4) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategoryDescription());
System.out.println("5) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).toString());
System.out.println("6) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategory().getName());
System.out.println("7) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategory().toString());

这是输出

1) com.webservices.lists.farming.SiteCategoryList@47c7b1f5

2) com.webservices.lists.farming.SiteCategoryList 类

3) [Lcom.webservices.lists.farming.SiteCategory;@105e924

4) >P 对齐=左>

5) com.webservices.lists.farming.SiteCategory@ca143fc6

6) 产品:杂项:瓶子

7) com.webservices.platform.core.RecordRef@78f8dcf1

6 号正是我想要的。我花了一些时间才最终达到这一点并找出正确的语法。如果你被要求用一个不熟悉的 API 来做这件事,你会怎么做才能找出正确的语法?

4

3 回答 3

7

我会寻找与您正在寻找的相同的东西。但是,我通常不会使用 Sys-Out。相反,我会在那里添加一个断点,使用调试器运行到该点。然后,使用“inspect”查看返回的内容。

于 2013-03-12T20:46:01.870 回答
3

我会查看导入 a 的代码,SiteCategory然后看看是否可以在some.package.name.SiteCategory.

真的,如果没有某种 javadoc 或实际的源代码,您几乎只能希望方法名称是描述性的“足够”。

因此,在文件中,您应该看到上述类的类或接口定义SiteCategory或“导入”块,如下所示

 import org.myorg.site.SiteCategory;

如果你不这样做,那么它实际上与包声明在同一个包中(文件中的第一个非注释非空行)。所以

 package com.mypackage.here;

这意味着com.mypackage.here.SiteCategory导入语句或“.java”文件中的定义失败。

然后根据源代码的可用性,我可能会打开源代码,或者如果它不可用,则查找一些已发布的 javadoc 文档。

于 2013-03-12T20:46:46.287 回答
1

在引用父对象的行设置断点,在调试模式下启动应用程序,然后当程序在断点处停止时,检查对象。你会很快弄清楚如何获得你想要的价值。

所有 IDE 都允许您检查对象及其字段(getter 与否)。

不要编写代码来调试:使用 java 的内置调试功能。

于 2013-03-12T21:09:48.803 回答