我在一个类中有一个方法,它大致同时被两个不同的对象调用。
public void doSomething(final int i)
{
if(getId() == i)
{
System.out.println("outer "+i);
Platform.runLater(new Runnable()
{
@Override
public void run()
{
System.out.println("inner "+i);
}
}
}
}
检查对象是否应该根据其 id 做某事。如果 id 正确,我会使用 Platform.runLater,因为我使用 JavaFX 做了一些事情。
问题是:当 ID 为 1 和 2 的对象应该做某事时,输出是这样的:
outer 1
outer 2
inner 2
inner 2
为什么内部方法不使用正确的值,而是以某种方式两次使用相同的值?
编辑:更正了内部方法