我正在將我的應用程序從JDK 7遷移到JDK 8.在執行操作時,如果創建瞭如下所示的TestField
實例,我正面臨異常com.sun.jdi.InvocationException occurred invoking method
。我在調試時遇到異常,找不到原因。我懷疑發生NullPointerException和InvocationException掩蓋它。我在TestField
中覆蓋了下面的Object方法。com.sun.jdi.InvocationException在JDK8中發生調用方法
以下實用程序類是commons-lang
jar的一部分。
HashCodeBuilder
EqualsBuilder
ToStringBuilder
public class TestField {
private String name;
private Rules rules;
public TestField(String name, Rules rules)
{ this.name = name;
this.rules = rules;
}
public String toString() {
return new ToStringBuilder(this)
.append("\n name", this.getName())
.append("\n Rules", this.getRules())
.append("\n ")
.toString();
}
public boolean equals(Object other) {
if (!(other instanceof TestField)) return false;
TestField castOther = (TestField) other;
return new EqualsBuilder()
.append(this.getName(), castOther.getName())
.append(this.getRules(), castOther.getRules())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(this.getName())
.append(this.getRules())
.toHashCode();
}
}
有任何人遇到這樣的問題。任何人都可以請幫我解決這個問題。謝謝。
非常感謝您的回覆.. Blizzardegle。這是由任何類的toString()實現中的InvocationException所掩蓋的NullPointerException。它與JDK 7一起工作正常,但與JDK8無關。在toString()中,在沒有null檢查的情況下循環一個空字符串數組在JDK7中工作正常,但在JDK8中工作正常。因此,JDK8中的所有字符串操作似乎都需要空檢查。 – sridhar