【问题标题】:When an instance variable of an object is highlighted in debug mode in eclipse当对象的实例变量在eclipse中以调试模式突出显示时
【发布时间】:2015-04-10 19:59:33
【问题描述】:

它显示了该对象中所有实例变量的列表,与您突出显示的实例变量相反。例如:

package nmelssx;

public class Cat {
int num1;
int num2;

public static void main(String args[]) {
    Cat cat = new Cat();
    cat.num1 = 5;

    if (cat.num1 == 5) {
        // then do this
    }
}
}

当您将鼠标光标放在 cat.num1 上时,它会显示 cat.num1 和 cat.num2 的值。虽然当您的对象中只有几个实例变量时这并不是一个真正的问题,但当您有十几个实例变量时它会成为一个问题,并且您只想知道光标悬停的实例变量的值超过。有人知道解决这个问题的方法吗?谢谢。

【问题讨论】:

  • 将光标放在 num1 而不是 cat 上。您只会看到针对 num1 的值
  • 它只显示对象名称、创建它的类和包名称,但没有值。
  • 这不是真的。第二件事,如果你在那个特定的断点,你可以选择 cat.num1 然后 Ctrl+Shift+I 将评估表达式或函数并显示输出
  • 这就是突出显示的内容 Open Declaration int nmelssx.Cat.num1
  • 但是如你所见,没有值。

标签: java debugging hover cursor


【解决方案1】:

如果您在调试时将光标放在对象上并按下快捷键ctrl+shift+i 或仅将光标移动到对象上,它将显示该对象内的所有实例变量的值,但如果您不调试并仅指向光标,那么它将显示带有类名和属性的对象名。

如果您想单独检查,然后将光标移动到不同的变量,在您的情况下是 num1num2,但是如果您在静态方法中访问这些变量,那么这些变量应该是静态的,那么只有您会得到值在指点上。如果您在实例方法中访问,那么它将在那里显示。

请调试以下代码

public class Cat{
static int num1;
int num2;

public static void main(String args[]){
Cat cat = new Cat();
num1 = 5;
cat.num2=6;
cat.display();

if(num1 == 5){
//then do this
}

}
public void display(){
    System.out.println(num2);
}
}

在显示方法中的if条件第二处首先将断点放在2个位置并检查。

【讨论】:

  • 这就是亮点所说的 Open Declaration int nmelssx.Cat.num1
  • 但是如你所见,没有值。
  • 如果你调试你会得到同样的东西
  • 说的是同一件事。
  • 我调试过了。当您将鼠标悬停在它上面时,它会显示 num2 = 6。但这不是我想要的。我想要它,所以如果你将鼠标悬停在 cat.num1 中的 num1 上,它会显示你的 cat.num1 的值,而不是什么都没有。我知道如果您将鼠标悬停在对象 cat 上,它会向您显示 cat 对象内的所有实例变量,但这不是我想要的。有没有办法做到这一点,如果您将鼠标悬停在 cat.num1 中的 num1 上,它会显示 cat.num1 的值而不是什么都没有?
猜你喜欢
  • 2012-07-05
  • 2023-03-29
  • 2015-07-28
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多