java - 这是阴影变量的情况吗?

标签 java debugging variables scope

对编程完全陌生。遇到了一个难以调试的错误。正在尝试修复它 最近几天。这样做让我自己几乎陷入歇斯底里的状态。决定坐下来看看随机页面上的Java书籍来冷静一下。本页是关于变量阴影的。然后我突然意识到我的代码中有这样的废话 我声明相同的变量两次。我把它取下来, bug 似乎就消失了。

public class Action extends JPanel { 
    private final Color BACKGROUND_COLOR = Color.BLACK; //JPanel background 
    private GameMemory memory = new GameMemory();        
    private int[][] grid = memory.getGrid(); 
    public static Color penColor = Color.GRAY;          //Variable for
                                                        //color

    public Action() { //Setting everything for JPanel
        memory = new GameMemory(); 
        grid = memory.getGrid(); 
        setBackground(BACKGROUND_COLOR); 
        setMinimumSize(new Dimension(360, 720)); 
        setPreferredSize(new Dimension(360, 720)); 
        setMaximumSize(new Dimension(360, 720)); 
        setVisible(true); 
        new Timer(100, new TimerListener()).start(); 
        //Setting Everything for keylistener
        this.setFocusable(true); 
        this.requestFocus();
        this.addKeyListener(new MyKeyListener());  
    }

那么大家觉得怎么样呢?这真的是影子案件吗?

最佳答案

您的声明中没有阴影概念。

当具有不同作用域的相同名称的变量或父级和子级具有相同的变量名称并访问它们时,阴影就会出现。

可能性是,

遮蔽局部变量遮蔽实例变量。

实例变量隐藏从其父级继承的变量。

   grid = memory.getGrid(); 

当您编写此内容时,先前的值将被覆盖。

关于java - 这是阴影变量的情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20717019/

相关文章:

.net - 如何使用 .pdb 文件调试库?

javascript - 是否可以覆盖 JavaScript 的 toString() 函数来为调试提供有意义的输出?

java - 如何在struts2中以最少的代码更改更改post请求以获取重定向?

java - 在 Spring Security 中提供静态资源 - 允许访问 '/resources/public' 中的所有文件

java - 构建 JAR 时 "launch configuration"的参数

linux - 如何确定程序试图打开哪些文件?

java - java比较运算符的工作原理

variables - 使用msdeploy在powershell中使用变量中的空格

javascript - 如果将全局变量定义为“0”,为什么变量“closed”记录为“false”?

java - java方法的返回值