gpt4 book ai didi

Java对象 "cannot be dereferenced"

转载 作者:行者123 更新时间:2023-12-02 10:47:33 25 4
gpt4 key购买 nike

我正在使用一个库 - HtmlUnit - 并且我刚刚从版本 2.4 更新到版本 2.5。当我针对 2.5 编译代码时,我收到一条我不熟悉的奇怪对象“无法取消引用”错误消息。此外,我不明白为什么当我用两行编写代码时它可以工作,但当我将其作为一行代码编写时却失败。

这是代码:

//this compiles fine
HtmlInput usernameInput = form.getInputByName("username");
usernameInput.setValueAttribute(userName);

//this fails to compile
form.getInputByName("password").setValueAttribute(passWord);

这是我使用 ANT 和 Java 1.6 编译时收到的错误消息:

[javac] E:\workspaces\europa\PortalTestSuite\src\com\carefirst\portal\test\controller\EAITest.java:32: com.gargoylesoftware.htmlunit.html.HtmlInput cannot be dereferenced
[javac] form.getInputByName("password").setValueAttribute(passWord);
[javac] ^

com.gargoylesoftware.htmlunit.html.HtmlInput 无法取消引用?我见过自动装箱的取消引用问题,但对象没有。在这种情况下这意味着什么?为什么代码以一种方式工作而不是以另一种方式工作?

最佳答案

事实上,这是另一个问题。

API 是 public final <I extends HtmlInput> I getInputByName(String name) throws ElementNotFoundException .

这意味着该方法返回 I 的实例(I extends HtmlInput)。

当你写下:

HtmlInput usernameInput = form.getInputByName("username");

-> 类 I 隐式是一个 HtmlInput。

但是当你写:

form.getInputByName("password").setValueAttribute(passWord);

-> 无法明确找到 I 类。

如果你想让它工作,你必须写:

form.<HtmlInput>getInputByName("password").setValueAttribute(passWord);

-> 这迫使 I 成为 HtmlInput。

诚挚地,杰罗姆。

关于Java对象 "cannot be dereferenced",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/749394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com