我正在 Liferay Developer Studio(即 Eclipse)中创建一个 Liferay portlet,并发现了一个非常非常奇怪的行为。
在一个 JSP 中,每次设置某个特定变量时,该变量的值都会在下一行中更改为 null
。这太奇怪了,我觉得我应该把它录下来 - 它是 in this YouTube video .
AnoterFieldComparator
类从 Liferay 扩展了 OrderByComparator
,如下所示。这个问题也发生在 OrderByComparator
子类上,尽管这对我来说没有意义。
public class AnoterFieldComparator extends OrderByComparator {
@Override
public int compare(Object o1, Object o2) {
Example example1 = (Example)o1;
Example example2 = (Example)o2;
return Integer.parseInt(""+(example1.getAnotherField() - example2.getAnotherField()));
}
}
(是的,有一个拼写错误。这只是一个实验:))
项目可见here和 here 。我知道这个问题写得不太好,但我很惊讶,通常只有新手才会谈论这种行为,而且大多数时候他们都是错的。
最佳答案
AnoterFieldComparator(或其父类(super class))的 toString 方法是什么?
屏幕截图中的 value 列不会变为 null,只是下面的框是此类的字符串表示形式,在视频末尾,您仍然可以在比较器的右侧看到类和对象 id,因此该变量不是 null,只是 to string 方法返回 null (0x0) 或字符串“null”。
关于java - 最近分配的变量在下一行中丢失其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263195/