为什么我的代码对非静态进行静态引用?怎么修?

时间:2014-02-25 20:53:41

标签: java static

我正在使用导入库中的代码(我无法修改)并尝试只调用项目的路径。这应该是这样做的命令:

Document.getSourceWorkspace().getPathById(id, Boolean, boolean)

因此,我使用名为contentId的DocumentId作为id,并使用“true”作为布尔值:

    String contentIdStr = request.getParameter("contentId");
    DocumentId contentId = workspace.createDocumentId(contentIdStr);

    Document.getSourceWorkspace().getPathById(contentId, true, true);

getPathById是java.lang.String类型,所以我想要做的就是(现在)显示它:

out.println("Path: " + Document.getSourceWorkspace().getPathById(contentId, true, true));

但是当我尝试运行它时,我得到错误:无法从类型Document

中对非静态方法getSourceWorkspace()进行静态引用

由于我在这里写的唯一代码是out.println,我不确定发生了什么。为什么我不能简单地输出它?那怎么是静态参考?我需要做些什么才能使其成为非静态的(请记住,我无法更改库中的任何内容或其他内容)?

我确实尝试创建一个字符串并将其分配给它,但这也不起作用......

String contentPath = Document.getSourceWorkspace().getPathById(contentId, 1, 1);

这(希望)可能很简单,但我根本不熟悉Java。我真的不知道语法应该是什么,所以也许我只是写错了?

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我想你想这样说:

someDocument.getSourceWorkspace().getPathById(contentId, true, true);

而不是:

Document.getSourceWorkspace().getPathById(contentId, true, true);

换句话说:getSourceWorkspace()实例方法(不是static方法),因此必须通过实例调用它Document班。