繁体   English   中英

为什么不能调用非静态变量?

[英]Why can't I call a non-static variable?

Eclipse说我不能对非静态字段Art.instance进行静态引用。 为什么认为我从静态上下文调用Art.instance?

TDRenderer本身的调用方式如下:

renderer = new TDRenderer();

TDRenderer.java:

package towerDefense;

import java.awt.Graphics;
import java.awt.Image;

public class TDRenderer {

    public Art art;

    public TDRenderer()
    {
        art = Art.instance;
    }

    public void render(Graphics g)
    {
        for(int i = 0; i < 32; i++)
        {
            for(int j = 0; j < 24; j++)
            {
                Image itd = (Image)(art.sprites[art.level1.tiles[i][j].type]);
                g.drawImage(itd, itd.getWidth(null), itd.getHeight(null), null);
            }
        }
    }
}

这并不是说您处于静态环境中;而是 这是因为instance不是Art的静态字段,但是将其引用为Art.instance意味着您试图将其视为静态使用。

您要在Art 上调用instance属性。

如果它不是静态的(即类变量),则没有值,因为它期望在从Art类实例化的对象中被引用。

如果要从任何地方导入Art都可以引用单个值,则将static前缀放在instance声明的前面,并在Art文件中为其提供值。 如果要从特定的Art对象访问instance变量,则需要创建一个instance并引用创建的对象的instance属性。

    public class TDRenderer {   
     public Art art;

        public TDRenderer()
        {
            art = Art.instance;
        }
//so on..

假设1 - Art.instancestatic实例。

如果是这样,则应将您的TDRenderer本地可变art TDRendererpublic static Art art;

好吧,那是多余且无用的。 您为什么不在需要的地方直接引用Art.instance?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM