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);
}
}
}
}
答案 0 :(得分:4)
并不是说你处于静态环境中; instance
不是Art
的静态字段,但是将其引用为Art.instance
意味着您正在尝试使用它,就好像它是静态的一样。
答案 1 :(得分:0)
您正在调用instance
类上的Art
媒体资源。
如果它不是静态的(即类变量),则没有值,因为它期望在从Art
类实例化的对象内引用。
如果您希望从导入Art
的任何位置引用单个值,请将static
前缀放在instance
声明前面,并在Art
声明中为其提供值{1}}文件。如果您要从特定的instance
对象访问Art
变量,则需要创建一个并引用所创建对象的instance
属性。
答案 2 :(得分:0)
public class TDRenderer {
public Art art;
public TDRenderer()
{
art = Art.instance;
}
//so on..
假设1 - Art.instance
是static
个实例。
如果是这样,您应将art
的本地变量TDRenderer
声明为public static Art art;
那么它是多余的,无用的。为什么不在任何需要的地方直接引用Art.instance?